Основы программирования в 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 для внутренних операций.
Параметр родительского виджета, общий для всех объектов, —
QWidgetNULL ButtonWindowthisButtonWindowАргумент
nameВы могли заметить, что объект
QPushButtonButtonWindowQPushButtonВ Qt есть целый ряд способов размещения и компоновки виджетов. Вы уже видели использование абсолютных координат с помощью вызова
setGeometryПредпочтительный метод компоновки виджетов — применение классов
QLayoutКлючевое различие между классами
QLayoutQLayoutКлассы компоновки — потомки объектов, типа
QObjectQWidgetQVBoxLayoutQMainWindowВиджеты упаковочных контейнеров (такие, как
QHBoxQVBoxQWidgetQLayoutQBoxQBoxQLayoutQWidgetQLayoutQWidget::resizeEvent()Подклассы
QLayoutQVBoxLayoutQHBoxLayoutQVBoxLayoutQHBoxLayoutЕсть три конструктора
QVBoxLayoutQHBoxLayout<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>Родителем объекта
QLayoutQLayoutQLayoutaddLayoutПараметры margin и spacing задают пустое пространство в пикселах вокруг схемы размещения
QLayoutПосле создания вашей схемы размещения
QLayout<b>QBoxLayout::addWidget(QWidget *widget, int stretch = 0, int alignment = 0);</b>
