Kniga-Online.club
» » » » Основы программирования в Linux - Мэтью Нейл

Основы программирования в Linux - Мэтью Нейл

Читать бесплатно Основы программирования в Linux - Мэтью Нейл. Жанр: Интернет год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

<b>QBoxLayout::addLayout(QLayout *layout, int stretch = 0);</b>

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

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

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

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

#include &lt;qmainwindow.h&gt;

class LayoutWindow : public QMainWindow {

 QOBJECT

public:

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

virtual ~LayoutWindow();

};

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

#include &lt;qapplication.h&gt;

#include &lt;qlabel.h&gt;

#include &lt;qlayout.h&gt;

#include &quot;LayoutWindow.moc&quot;

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

 QMainWindow(parent, name) {

 this-&gt;setCaption(&quot;Layouts&quot;);

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

 QWidget *widget = new QWidget(this);

 setCentralWidget(widget);

 QHBoxLayout *horizontal = new QHBoxLayout(widget, 5, 10, &quot;horizontal&quot;);

 QVBoxLayout *vertical = new QVBoxLayout();

 QLabel* label1 = new QLabel(&quot;Top&quot;, widget, &quot;textLabel1&quot;);

 QLabel* label2 = new QLabel(&quot;Bottom&quot;, widget, &quot;textLabel2&quot;);

 QLabel* label3 = new QLabel(&quot;Right&quot;, widget, &quot;textLabel3&quot;);

 vertical-&gt;addwidget(label1);

 vertical-&gt;addwidget(label2);

 horizontal-&gt;addLayout(vertical);

 horizontal-&gt;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-&gt;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 создает два виджета упаковочных контейнеров, горизонтальный и вертикальный контейнер для размещения виджетов. Вертикальный контейнер получает две метки, описанные, соответственно, как Top и Bottom. Горизонтальный контейнер также содержит два виджета, метку, обозначенную Right, и вертикальный контейнер. Вы можете помещать компоновочные виджеты внутрь других компоновочных виджетов, как показано в данном примере.

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

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

Виджеты Qt

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

QLineEdit

QLineEdit — виджет для ввода однострочного текста. Применяйте его для ввода коротких фрагментов текста, таких как имя пользователя. В виджете QLineEdit можно ограничить длину вводимого текста с помощью маски ввода, предлагающей заполнить шаблон, или для дополнительного контроля можно применить функцию проверки допустимости, например, чтобы убедиться в том, что пользователь вводит корректные дату, номер телефона или подобные величины. У виджета QLineEdit есть функции редактирования, позволяющие выбирать части текста, вырезать и вставлять, отменять и повторять изменения, как командами пользователя, так и средствами API.

Далее перечислены конструкторы и наиболее полезные методы.

<b>#include &lt;qlineedit.h&gt;</b>

<b>QLineEdit::QLineEdit(QWidget *parent, const char* name = 0);</b>

<b>QLineEdit::QLineEdit(const QString&amp; contents, QWidget *parent,</b>

<b> const char *name = 0);</b>

<b>QLineEdit::QLineEdit(const QString&amp; contents, const QString&amp; inputMask,</b>

<b> QWidget *parent, const char* name = 0);</b>

<b>void setInputMask(const QString&amp; inputMask);</b>

<b>void insert(const QString&amp; newText);</b>

<b>bool isModified(void);</b>

<b>void setMaxLength(int length);</b>

<b>void setReadOnly(bool read);</b>

Перейти на страницу:

Мэтью Нейл читать все книги автора по порядку

Мэтью Нейл - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Основы программирования в Linux отзывы

Отзывы читателей о книге Основы программирования в Linux, автор: Мэтью Нейл. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*