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

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

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

Β grid->addWidget(username_entry, 0, 1, 0);

Β grid->addWidget(password_entry, 1, 1, 0);

Β QPushButton *button = new QPushButton("Ok", widget, "button");

Β grid->addWidget(button, 2, 1, Qt::AlignRight);

Β resize(350, 200);

Β connect(button, SIGNAL(clicked()), this, SLOT(Clicked()));

}

void LineEdit::Clicked(void) {

Β std::cout << password_entry->text() << "\n";

}

int main(int argc, char **argv) {

Β QApplication app(argc, argv);

Β LineEdit *window = new LineEdit();

Β app.setMainWidget(window);

Β window->show();

Β return app.exec();

}

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π½Π° рис. 17.5.

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

Рис. 17.5

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

Π’Ρ‹ создали Π΄Π²Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°

QLineEdit
, ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ для Π²Π²ΠΎΠ΄Π° пароля, Π·Π°Π΄Π°Π²
EchoMode
, ΠΈ заставили Π΅Π³ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ содСрТимоС ΠΏΡ€ΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ ΠΌΡ‹ΡˆΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ
PushButton
. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚
QGridLayout
, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для размСщСния Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ сСткС. Когда Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ вставляСтся Π² сСтку Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ строки ΠΈ столбца, нумСрация начинаСтся с 0, Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° строки ΠΈ столбца Ρƒ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π»Π΅Π²ΠΎΠΉ ячСйки.

Кнопки Qt

Кнопки Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² вСздСсущи ΠΈ ΠΌΠ°Π»ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ внСшним Π²ΠΈΠ΄ΠΎΠΌ, способом примСнСния ΠΈ API Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π°Ρ… инструмСнтов. ΠΠ΅ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Qt ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ стандартныС ΠΊΠ½ΠΎΠΏΠΊΠΈ

PushButton
, Ρ„Π»Π°ΠΆΠΊΠΈ
CheckBox
ΠΈ Ρ€Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΊΠΈ (ΠΈΠ»ΠΈ зависимыС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ)
RadioButton
.

QButton: Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс ΠΊΠ½ΠΎΠΏΠΎΠΊ

ВсС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ Qt β€” ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ абстрактного класса

QButton
. Π£ этого класса Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для опроса ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ/Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ состояния ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ задания тСкста ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ»ΠΈ Π΅Π΅ графичСского прСдставлСния.

Π’Π°ΠΌ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ придСтся ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Ρ‚ΠΈΠΏΠ°

QButton
(Π½Π΅ ΠΏΡƒΡ‚Π°ΠΉΡ‚Π΅ с Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠΌ
QPushButton
!), поэтому Π½Π΅Ρ‚ смысла ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ конструкторы. Π”Π°Π»Π΅Π΅ пСрСчислСно нСсколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² этого класса:

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

<b>virtual void QButton::setText(const QString&amp;);</b>

<b>virtual void QButton::setPixmap(const QPixmap&amp;);</b>

<b>bool QButton::isToggleButton() const;</b>

<b>virtual void QButton::setDown(bool);</b>

<b>bool QButton::isDown() const;</b>

<b>bool QButton::isOn() const;</b>

<b>enum QButton::ToggleState { Off, NoChange, On }</b>

<b>ToggleState QButton::state() const;</b>

Π£ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

isDown
ΠΈ
isOn
ΠΎΠ΄Π½ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ОбС ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚
TRUE
, Ссли ΠΊΠ½ΠΎΠΏΠΊΠ° Π±Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π° ΠΈΠ»ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°.

Часто Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сСрым Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Ссли ΠΎΠ½ нСдоступСн Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ нСдоступным любой Π²ΠΈΠ΄ΠΆΠ΅Ρ‚, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ QButton, ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

QWidget::setEnable(FALSE)
.

Π£Β 

QButton
Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ подкласса, Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ внимания:

β–‘Β 

QPushButton
β€” Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ простой ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ дСйствиС ΠΏΡ€ΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ;

β–‘Β 

QCheckBox
β€” Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ, способный ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ состояниС с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅ для обозначСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π°;

β–‘Β 

QRadioButton
β€” Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ примСняСмый Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ Ρ‚Π°ΠΊΠΈΡ… ΠΆΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½Π° Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

QPushButton

QPushButton
β€” стандартная ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΎΠ±Ρ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°, содСрТащая тСкст, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ "OK" ΠΈΠ»ΠΈ "Cancel" ΠΈ/ΠΈΠ»ΠΈ ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Как всС ΠΊΠ½ΠΎΠΏΠΊΠΈ класса
QButton
, ΠΎΠ½Π° ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ ΠΏΡ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·Π°Ρ†ΠΈΠΈ сигнал
clicked
ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для связи со слотом ΠΈ выполнСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ дСйствия.

Π’Ρ‹ ΡƒΠΆΠ΅ примСняли ΠΊΠ½ΠΎΠΏΠΊΡƒ

QPushButton
Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, ΠΈ Π΅ΡΡ‚ΡŒ лишь Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° интСрСсная Π΄Π΅Ρ‚Π°Π»ΡŒ, ΠΊΠ°ΡΠ°ΡŽΡ‰Π°ΡΡΡ этого ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ ΠΈΠ· Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Qt. ΠšΠ½ΠΎΠΏΠΊΡƒ
QPushButton
ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π½Π΅ помнящСй своСго состояния, Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ-Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ (Ρ‚.Π΅. ΡΠΏΠΎΡΠΎΠ±Π½ΡƒΡŽ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ), Π²Ρ‹Π·Π²Π°Π² ΠΌΠ΅Ρ‚ΠΎΠ΄
setToggleButton
. (Если ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρƒ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π° GTK+ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π³Π»Π°Π²Ρ‹ Π΅ΡΡ‚ΡŒ для этих Ρ†Π΅Π»Π΅ΠΉ Ρ€Π°Π·Π½Ρ‹Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹.)

Π”Π°Π»Π΅Π΅ для ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹ описания ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ конструкторы ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

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

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

<b>QPushButton(const QString&amp; text, QWidget *parent, const char *name = 0);</b>

<b>QPushButton(const QIconSet&amp; icon, const QString&amp; text,</b>

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

<b>void QPushButton::setToggleButton(bool);</b>

QCheckBox

QCheckBox
β€” это ΠΊΠ½ΠΎΠΏΠΊΠ°, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ состояниС, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ (ΠΈΠ»ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ). Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄
QCheckBox
зависит ΠΎΡ‚ стиля отобраТСния ΠΎΠΊΠΎΠ½ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ систСмы (Motif, Windows ΠΈ Ρ‚.Π΄.), Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½Π° отобраТаСтся ΠΊΠ°ΠΊ Ρ„Π»Π°ΠΆΠΎΠΊ с ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ тСкстом справа.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ пСрСвСсти ΠΊΠ½ΠΎΠΏΠΊΡƒ

QCheckBox
Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ состояниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ "Π±Π΅Π· измСнСния". Оно Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² Ρ€Π΅Π΄ΠΊΠΈΡ… случаях, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ состояниС Π²Ρ‹Π±ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт ΠΊΠ½ΠΎΠΏΠΊΠ°
QCheckBox
(ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Ρ„Π»Π°ΠΆΠΎΠΊ), Π½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ наряду с установкой ΠΈ сбросом.