Чтение онлайн

на главную - закладки

Жанры

Основы программирования в Linux
Шрифт:

Вы уже применяли кнопку

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:

Поделиться:
Популярные книги

Серые сутки

Сай Ярослав
4. Медорфенов
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Серые сутки

На границе империй. Том 7. Часть 5

INDIGO
11. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 7. Часть 5

Путь

Yagger Егор
Фантастика:
космическая фантастика
4.25
рейтинг книги
Путь

Ботаник 2

Щепетнов Евгений Владимирович
2. Ботаник
Фантастика:
фэнтези
боевая фантастика
6.00
рейтинг книги
Ботаник 2

Рубежник

Билик Дмитрий Александрович
1. Бедовый
Фантастика:
юмористическая фантастика
городское фэнтези
мистика
5.00
рейтинг книги
Рубежник

Изгой Проклятого Клана. Том 2

Пламенев Владимир
2. Изгой
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Изгой Проклятого Клана. Том 2

На границе империй. Том 10. Часть 8

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 8

Атаман. Гексалогия

Корчевский Юрий Григорьевич
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
8.15
рейтинг книги
Атаман. Гексалогия

Эволюционер из трущоб. Том 7

Панарин Антон
7. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 7

Долг

Кораблев Родион
7. Другая сторона
Фантастика:
боевая фантастика
5.56
рейтинг книги
Долг

Сталин

Рыбас Святослав Юрьевич
1190. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
4.50
рейтинг книги
Сталин

Черный Маг Императора 17

Герда Александр
17. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Черный Маг Императора 17

Воевода

Ланцов Михаил Алексеевич
5. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Воевода

Мечников. Из доктора в маги

Алмазов Игорь
1. Жизнь Лекаря с нуля
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Мечников. Из доктора в маги