Читать книгу 📗 "Основы программирования в Linux - Мэтью Нейл"
<b>QBoxLayout::addLayout(QLayout *layout, int stretch = 0);</b>Выполните упражнение 17.3.
QBoxLayoutВ этом примере вы увидите в действии классы
QBoxLayoutQLabelQMainWindow1. Сначала введите заголовочный файл LayoutWindow.h:
#include <qmainwindow.h>class LayoutWindow : public QMainWindow { QOBJECTpublic: LayoutWindow(QWidget *parent = 0, const char *name = 0);virtual ~LayoutWindow();};2. Теперь введите реализацию в файл LayoutWindow.cpp:
#include <qapplication.h>#include <qlabel.h>#include <qlayout.h>#include "LayoutWindow.moc"LayoutWindow::LayoutWindow(QWidget* parent, const char *name) : QMainWindow(parent, name) { this->setCaption("Layouts");3. Необходимо создать фиктивный
QWidgetQHBoxLayoutQMainWindow QWidget *widget = new QWidget(this); setCentralWidget(widget); QHBoxLayout *horizontal = new QHBoxLayout(widget, 5, 10, "horizontal"); QVBoxLayout *vertical = new QVBoxLayout(); QLabel* label1 = new QLabel("Top", widget, "textLabel1"); QLabel* label2 = new QLabel("Bottom", widget, "textLabel2"); QLabel* label3 = new QLabel("Right", widget, "textLabel3"); vertical->addwidget(label1); vertical->addwidget(label2); horizontal->addLayout(vertical); horizontal->addWidget(label3); resize(150, 100);}LayoutWindow::~LayoutWindow() { }int main(int argc, char **argv) { QApplication app(argc, argv); LayoutWindow *window = new LayoutWindow(); app.setMainWidget(window); window->show(); return app.exec();}Как и прежде, перед компиляцией нужно выполнить
moc$ <b>moc LayoutWindow.h -о LayoutWindow.moc</b>$ <b>g++ -о layout LayoutWindow.cpp -I$QTDIR/include -L$QTDIR/lib -lqui</b>Выполнив эту программу, вы получите схему размещения ваших меток QLabel (рис. 17.4). Попробуйте изменить величину окна и посмотрите, как расширяются и сжимаются метки, заполняя все доступное пространство.

Рис. 17.4
Как это работает
Программа LayoutWindow.cpp создает два виджета упаковочных контейнеров, горизонтальный и вертикальный контейнер для размещения виджетов. Вертикальный контейнер получает две метки, описанные, соответственно, как
TopBottomRightПопробуйте изменить исходный текст программы в файле LayoutWindow.срр, чтобы поэкспериментировать и лучше понять, как работают компоновочные виджеты.
Мы рассмотрели основы применения Qt — сигналы и слоты, команду moc и средства компоновки. Теперь пора более внимательно изучить виджеты.
Виджеты Qt
Для каждого случая в Qt есть виджеты, и их подробное рассмотрение займет всю оставшуюся часть книги. В этом разделе мы познакомимся с виджетами Qt общего применения, включая виджеты для ввода данных, кнопки, обычные и раскрывающиеся списки.
QLineEdit
QLineEditQLineEditQLineEditДалее перечислены конструкторы и наиболее полезные методы.
<b>#include <qlineedit.h></b><b>QLineEdit::QLineEdit(QWidget *parent, const char* name = 0);</b><b>QLineEdit::QLineEdit(const QString& contents, QWidget *parent,</b><b> const char *name = 0);</b><b>QLineEdit::QLineEdit(const QString& contents, const QString& inputMask,</b><b> QWidget *parent, const char* name = 0);</b><b>void setInputMask(const QString& inputMask);</b><b>void insert(const QString& newText);</b><b>bool isModified(void);</b><b>void setMaxLength(int length);</b><b>void setReadOnly(bool read);</b>