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

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

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

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

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

QPushButton

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

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

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

#include <qpushbutton.h>

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

QPushButton(const QString& text, QWidget *parent, const char *name = 0);

QPushButton(const QIconSet& icon, const QString& text,

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

void QPushButton::setToggleButton(bool);

QCheckBox

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

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

#include <qcheckbox.h>

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

QCheckBox(const QString& text, QWidget *parent, const char *name = 0);

bool QCheckBox::isChecked();

void QCheckBox::setTristate(bool y = TRUE);

bool QCheckBox::isTristate();

QRadioButton

Π Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΊΠΈ β€” ΠΊΠ½ΠΎΠΏΠΊΠΈ-ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ, примСняСмыС для отобраТСния ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ прСдставлСнных (вспомнитС снова старыС Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π΄ΠΈΠΎΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π±Π»ΠΎΠΊΠ°). Π‘Π°ΠΌΠΈ ΠΏΠΎ сСбС ΠΊΠ½ΠΎΠΏΠΊΠΈ QRadioButton Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΊΠ½ΠΎΠΏΠΎΠΊ QCheckBox, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ классом QButtonGroup, Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΆΠ΅ ΠΈΡ… ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π° Π½Π΅ ΠΊΠ°ΠΊ Ρ„Π»Π°ΠΆΠΊΠΈ.

QButtonGroup β€” Π²ΠΈΠ΄ΠΆΠ΅Ρ‚, ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π³Ρ€ΡƒΠΏΠΏ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π·Π° счСт прСдоставлСния ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

#include <qbuttongroup.h>

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

QButtonGroup(const QString& title, QWidget* parent = 0,

 const char * name = 0);

int insert (QButton *button, int id = -1);

void remove(QButton *button);

int id(QButton *button) const;

int count() const;

int selectedId() const;

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ QButtonGroup ΠΏΡ€ΠΎΡ‰Π΅ простого: ΠΎΠ½ Π΄Π°ΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°ΠΌΠΊΡƒ Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΊΠ½ΠΎΠΏΠΎΠΊ, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструктор title.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² QButtonGroup ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° insert ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ QButtonGroup Π² качСствС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ. Для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ обозначСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ id Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ insert. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ‚.ΠΊ. функция selectedId Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ id Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ.

ВсС ΠΊΠ½ΠΎΠΏΠΊΠΈ QRadioButton, добавляСмыС Π² Π³Ρ€ΡƒΠΏΠΏΡƒ, автоматичСски становятся ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ с ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ.

Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ конструкторов QRadioButton ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ большого удивлСния:

#include <qradiobutton.h>

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

QRadioButton(const QString& text, QWidget *parent, const char *name = 0);

bool QRadioButton::isChecked();

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 17.5.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 17.5. Π’ΠΈΠ΄ΠΆΠ΅Ρ‚ QButton

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ знания Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ Qt. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π΄Π°Π»Π΅Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° создаСт ΠΊΠ½ΠΎΠΏΠΊΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (Ρ€Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ„Π»Π°ΠΆΠΊΠΈ ΠΈ простыС ΠΊΠ½ΠΎΠΏΠΊΠΈ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Π² Π²Π°ΡˆΠΈΡ… прилоТСниях.

1. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» Buttons.h:

#include <qmainwindow.h>

#include <qcheckbox.h>

#include <qbutton.h>

#include <qradiobutton.h>

class Buttons : public CMainWindow {

 Q_OBJECT

public:

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

2. Π’Ρ‹ запроситС состояниС Π²Π°ΡˆΠΈΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΠΎΠ·ΠΆΠ΅, Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ слота, поэтому ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ PrintActive с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ private Π² объявлСнии класса:

private:

 void PrintActive(QButton *button);

 QCheckBox *checkbox;

 QRadioButton *radiobutton1, *radiobutton2;

private slots:

 void Clicked();

}

3. Π”Π°Π»Π΅Π΅ слСдуСт Ρ„Π°ΠΉΠ» Buttons.срр:

#include "Buttons.moc"

#include <qbuttongroup.h>

#include <qpushbutton.h>

#include <qapplication.h>

#include <qlabel.h>

#include <qlayout.h>

#include <iostream>


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

 QMainWindow(parent, name) {

 QWidget* widget = new QWidget(this);

 setCentralWidget(widget);

 QVBoxLayout *vbox = new QVBoxLayout(widget, 5, 10, "vbox");

 checkbox = new QCheckBox("CheckButton", widget, "check");

 vbox->addWidget(checkbox);

4. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ создаСтС QButtonGroup для Π΄Π²ΡƒΡ… Π²Π°ΡˆΠΈΡ… Ρ€Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΎΠΊ (ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ).

 QButtonGroup *buttongroup = new QButtonGroup(0);

 radiobutton1 = new QRadioButton("RadioButton1", widget, "radio1");

 buttongroup->insert(radiobutton1);

 vbox->addWidget(radiobutton1);

 radiobutton2 = new QRadioButton("RadioButton2", widget, "radio2");

 buttongroup->insert(radiobutton2);

 vbox->addWidget(radiobutton2);

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

 vbox->addWidget(button);

 resize(350, 200);

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

}

5. Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ для Π²Ρ‹Π²ΠΎΠ΄Π° состояния Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ QButton:

void Buttons::PrintActive(QButton *button) {

 if (button->isOn())

  std::cout << button->name() << " is checked\n";

 else

  std::cout" << button->name() << " is not checked\n";

}


void Buttons::Clicked(void) {

 PrintActive(checkbox);

 PrintActive(radiobutton1);

 PrintActive(radiobutton2);

 std::cout << "\n";

}


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

 QApplication app(argc, argv);

 Buttons *window = new Buttons();

 app.setMainWidget(window);

 window->show();

 return app.exec();

}

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

Π­Ρ‚ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ Qt Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². ПослС создания всС ΠΎΠ½ΠΈ ΠΏΠΎ большСй части Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. НапримСр, функция PrintActive дСмонстрируСт, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ состояниС ΠΊΠ½ΠΎΠΏΠΊΠΈ (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΈΠ»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π°). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° дСйствуСт Π² случаС Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… состояниС ΠΊΠ½ΠΎΠΏΠΎΠΊ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ„Π»Π°ΠΆΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ (Ρ€Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΊΠΈ). Π’ основном ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π·ΠΎΠ²Ρ‹ для создания Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΊΠΈ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ слоТныС (Ρ‚.ΠΊ. Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°), ΠΏΡ€ΠΈ создании Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ большС всСго Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’ случаС Ρ€Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΎΠΊ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ QButtonGroup для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ Ρ€Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΊΠΈ Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

QComboBox

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ (Ρ€Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΊΠΈ) β€” ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· нСбольшого числа Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², скаТСм ΡˆΠ΅ΡΡ‚ΠΈ ΠΈΠ»ΠΈ мСньшС. Если Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² большС ΡˆΠ΅ΡΡ‚ΠΈ, ситуация Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ·-ΠΏΠΎΠ΄ контроля ΠΈ становится Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ напряТСнной, ΠΊΠΎΠ³Π΄Π° количСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² растСт, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠΎΠΌΡƒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠΊΠ½Π°. Π’ этом случаС прСкрасным Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использованиС поля Π²Π²ΠΎΠ΄Π° с Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΡΡ мСню, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΡΡ списком (combo box). Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ выводятся, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ‰Π΅Π»ΠΊΠ°Π΅Ρ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ мСню ΠΈ количСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ этом ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ удобством поиска Π² спискС.

Π’ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π΅ QComboBox ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² QLineEdit ΠΈ QPushButton ΠΈ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ…ΡΡ мСню, позволяя Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈΠ· Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ².

QComboBox ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ, ΠΊΠ°ΠΊ для чтСния ΠΈ записи, Ρ‚Π°ΠΊ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния. Если ΠΎΠ½ позволяСт Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти Π½ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΌ; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΈΠ· Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ списка.