Читаем Основы программирования в Linux полностью

Параметры margin и spacing задают пустое пространство в пикселах вокруг схемы размещения QLayout и между отдельными виджетами в ней.

После создания вашей схемы размещения QLayout вы можете вставлять дочерние виджеты или схемы с помощью следующей пары методов:

QBoxLayout::addWidget(QWidget *widget, int stretch = 0, int alignment = 0);

QBoxLayout::addLayout(QLayout *layout, int stretch = 0);

Выполните упражнение 17.3.

Упражнение 17.3. Применение классов QBoxLayout

В этом примере вы увидите в действии классы QBoxLayout при размещении виджетов QLabel в окне QMainWindow.

1. Сначала введите заголовочный файл LayoutWindow.h:

#include

class LayoutWindow : public QMainWindow {

 QOBJECT

public:

 LayoutWindow(QWidget *parent = 0, const char *name = 0);

virtual ~LayoutWindow();

};

2. Теперь введите реализацию в файл LayoutWindow.cpp:

#include

#include

#include

#include "LayoutWindow.moc"

LayoutWindow::LayoutWindow(QWidget* parent, const char *name) :

 QMainWindow(parent, name) {

 this->setCaption("Layouts");

3. Необходимо создать фиктивный QWidget для хранения объекта QHBoxLayout, поскольку его нельзя напрямую вставить в объект QMainWindow:

 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 для заголовочного файла:

$ moc LayoutWindow.h -о LayoutWindow.moc

$ g++ -о layout LayoutWindow.cpp -I$QTDIR/include -L$QTDIR/lib -lqui

Выполнив эту программу, вы получите схему размещения ваших меток QLabel (рис. 17.4). Попробуйте изменить величину окна и посмотрите, как расширяются и сжимаются метки, заполняя все доступное пространство.

Рис. 17.4

Как это работает

Программа LayoutWindow.cpp создает два виджета упаковочных контейнеров, горизонтальный и вертикальный контейнер для размещения виджетов. Вертикальный контейнер получает две метки, описанные, соответственно, как Top и Bottom. Горизонтальный контейнер также содержит два виджета, метку, обозначенную Right, и вертикальный контейнер. Вы можете помещать компоновочные виджеты внутрь других компоновочных виджетов, как показано в данном примере.

Попробуйте изменить исходный текст программы в файле LayoutWindow.срр, чтобы поэкспериментировать и лучше понять, как работают компоновочные виджеты.

Мы рассмотрели основы применения Qt — сигналы и слоты, команду moc и средства компоновки. Теперь пора более внимательно изучить виджеты.

<p>Виджеты Qt</p>

Для каждого случая в Qt есть виджеты, и их подробное рассмотрение займет всю оставшуюся часть книги. В этом разделе мы познакомимся с виджетами Qt общего применения, включая виджеты для ввода данных, кнопки, обычные и раскрывающиеся списки.

<p><emphasis>QLineEdit</emphasis></p>
Перейти на страницу:

Похожие книги

1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT