Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
app.setMainWidget(window);
window->show();
return app.exec();
}
7. Прежде чем вы сможете откомпилировать данный пример, необходимо запустить препроцессор для заголовочного файла. Программа этого препроцессора называется Meta Object Compiler (moc, компилятор метаобъекта) и должна быть включена в пакет комплекта Qt. Выполните
moc
$ <b>moc ButtonWindow.h -о ButtonWindow.moc</b>
Теперь можно компилировать как обычно, скомпоновав с результатом команды
moc
$ <b>g++ -о button ButtonWindow.срр -I$QTDIR/include -L$QTDIR/lib -lqui</b>
Выполнив программу, вы получите пример, показанный на рис. 17.3.
Рис. 17.3
Как это работает
В этом примере мы ввели новый виджет и некоторые новые функции, поэтому давайте их рассмотрим.
QPushButton
Конструктор объекта
QPushButton
<b>QPushButton::QPushButton(const QString &text, QWidget *parent,</b>
<b> const char* name=0);</b>
Первый аргумент — текст метки кнопки, далее родительский виджет и последний аргумент — имя кнопки, обычно применяемое Qt для внутренних операций.
Параметр родительского виджета, общий для всех объектов, —
QWidget
NULL
ButtonWindow
this
ButtonWindow
Аргумент
name
Вы могли заметить, что объект
QPushButton
ButtonWindow
QPushButton
В Qt есть целый ряд способов размещения и компоновки виджетов. Вы уже видели использование абсолютных координат с помощью вызова
setGeometry
Предпочтительный метод компоновки виджетов — применение классов
QLayout
Ключевое различие между классами
QLayout
QLayout
Классы компоновки — потомки объектов, типа
QObject
QWidget
QVBoxLayout
QMainWindow
Виджеты упаковочных контейнеров (такие, как
QHBox
QVBox
QWidget
QLayout
QBox
QBox
QLayout
QWidget
QLayout
QWidget::resizeEvent()
Подклассы
QLayout
QVBoxLayout
QHBoxLayout
QVBoxLayout
QHBoxLayout
Есть три конструктора
QVBoxLayout
QHBoxLayout
<b>QVBoxLayout::QVBoxLayout(QWidget *parent, int margin, int spacing,</b>
<b> const char *name)</b>
<b>QVBoxLayout::QVBoxLayout(QLayout *parentLayout, int spacing,</b>
<b> const char * name)</b>
<b>QVBoxLayout::QVBoxLayout(int spacing, const char *name)</b>
Родителем объекта
QLayout
QLayout
QLayout
addLayout
Параметры margin и spacing задают пустое пространство в пикселах вокруг схемы размещения
QLayout
После создания вашей схемы размещения
QLayout
<b>QBoxLayout::addWidget(QWidget *widget, int stretch = 0, int alignment = 0);</b>