Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 304

Автор ΠœΡΡ‚ΡŒΡŽ НСйл

<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). ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ ΠΎΠΊΠ½Π° ΠΈ посмотритС, ΠΊΠ°ΠΊ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ΡΡ ΠΈ ΡΠΆΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΊΠΈ, заполняя всС доступноС пространство.

ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² Linux - image069.jpg

Рис. 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>