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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 303 304 305 306 307 308 309 310 311 ... 324

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

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

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

<b>bool QCheckBox::isChecked();</b>

<b>void QCheckBox::setTristate(bool y = TRUE);</b>

<b>bool QCheckBox::isTristate();</b>

QRadioButton

Радиокнопки — кнопки-переключатели, применяемые для отображения исключающего выбора, когда можно выбрать только один вариант из группы представленных (вспомните снова старые автомобильные радиоприемники, в которых можно было нажать только одну кнопку блока). Сами по себе кнопки QRadioButton не многим отличаются от кнопок QCheckBox, поскольку группировка и исключительный выбор обрабатываются классом QButtonGroup, главное же их отличие заключается в том, что они отображаются как круглые кнопки, а не как флажки.

QButtonGroup — виджет, облегчающий обработку групп кнопок за счет предоставления удобных методов.

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

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

<b>QButtonGroup(const QString&amp; title, QWidget* parent = 0,</b>

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

<b>int insert (QButton *button, int id = -1);</b>

<b>void remove(QButton *button);</b>

<b>int id(QButton *button) const;</b>

<b>int count() const;</b>

<b>int selectedId() const;</b>

Применять виджет QButtonGroup проще простого: он даже предлагает необязательную рамку вокруг кнопок, если используется конструктор title.

Добавить кнопку в QButtonGroup можно с помощью метода insert или заданием QButtonGroup в качестве родительского виджета кнопки. Для уникального обозначения каждой кнопки в группе можно задать id в методе insert. Это особенно полезно при определении выбранной кнопки, т.к. функция selectedId возвращает id выбранной кнопки.

Все кнопки QRadioButton, добавляемые в группу, автоматически становятся кнопками с исключающим выбором.

Далее приведены прототипы конструкторов QRadioButton и одного уникального метода, который не вызовет большого удивления:

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

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

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

<b>bool QRadioButton::isChecked();</b>

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

Упражнение 17.5. Виджет QButton

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

1. Введите файл Buttons.h:

#include &lt;qmainwindow.h&gt;

#include &lt;qcheckbox.h&gt;

#include &lt;qbutton.h&gt;

#include &lt;qradiobutton.h&gt;

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 &quot;Buttons.moc&quot;

#include &lt;qbuttongroup.h&gt;

#include &lt;qpushbutton.h&gt;

#include &lt;qapplication.h&gt;

#include &lt;qlabel.h&gt;

#include &lt;qlayout.h&gt;

#include &lt;iostream&gt;

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

 QMainWindow(parent, name) {

 QWidget* widget = new QWidget(this);

 setCentralWidget(widget);

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

 checkbox = new QCheckBox(&quot;CheckButton&quot;, widget, &quot;check&quot;);

 vbox-&gt;addWidget(checkbox);

4. Затем вы создаете QButtonGroup для двух ваших радиокнопок (переключателей).

 QButtonGroup *buttongroup = new QButtonGroup(0);

 radiobutton1 = new QRadioButton(&quot;RadioButton1&quot;, widget, &quot;radio1&quot;);

 buttongroup-&gt;insert(radiobutton1);

 vbox-&gt;addWidget(radiobutton1);

 radiobutton2 = new QRadioButton(&quot;RadioButton2&quot;, widget, &quot;radio2&quot;);

 buttongroup-&gt;insert(radiobutton2);

 vbox-&gt;addWidget(radiobutton2);

1 ... 303 304 305 306 307 308 309 310 311 ... 324
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Основы программирования в Linux - Мэтью Нейл.

Оставить комментарий