Вход/Регистрация
Основы программирования в Linux
вернуться

Мэтью Нейл

Шрифт:

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

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");

  • Читать дальше
  • 1
  • ...
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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