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

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

Жанры

Основы программирования в 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:

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

Последний Паладин. Том 6

Саваровский Роман
6. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 6

Переговоры

Форсайт Фредерик
Детективы:
политические детективы
5.75
рейтинг книги
Переговоры

Локки 2. Потомок бога

Решетов Евгений Валерьевич
2. Локки
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Локки 2. Потомок бога

Дважды одаренный. Том II

Тарс Элиан
2. Дважды одаренный
Фантастика:
городское фэнтези
альтернативная история
аниме
5.25
рейтинг книги
Дважды одаренный. Том II

Ботаник 2

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

Падение Парижа

Эренбург Илья Григорьевич
Проза:
современная проза
5.00
рейтинг книги
Падение Парижа

#Бояръ-Аниме. Газлайтер. Том 11

Володин Григорий Григорьевич
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11

Третий Генерал: Том VIII

Зот Бакалавр
7. Третий Генерал
Фантастика:
городское фэнтези
аниме
сказочная фантастика
попаданцы
5.00
рейтинг книги
Третий Генерал: Том VIII

Дорога ветров

Уильямс Тэд
3. Орден Манускрипта
Фантастика:
фэнтези
7.75
рейтинг книги
Дорога ветров

Архонт

Прокофьев Роман Юрьевич
5. Стеллар
Фантастика:
боевая фантастика
рпг
7.85
рейтинг книги
Архонт

Наследие Маозари 8

Панежин Евгений
8. Наследие Маозари
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
постапокалипсис
рпг
фэнтези
эпическая фантастика
5.00
рейтинг книги
Наследие Маозари 8

Магическая сделка

Звездная Елена
3. Долина Драконов
Фантастика:
фэнтези
6.84
рейтинг книги
Магическая сделка

Наследие Маозари 3

Панежин Евгений
3. Наследие Маозари
Фантастика:
рпг
аниме
5.00
рейтинг книги
Наследие Маозари 3

Наводнение (сборник)

Высоцкий Сергей Александрович
Мастера советского детектива
Детективы:
прочие детективы
5.00
рейтинг книги
Наводнение (сборник)