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

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

Жанры

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

 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
может быть открытым, как для чтения и записи, так и только для чтения. Если он позволяет читать и записывать, пользователь может ввести новый вариант в дополнение к предлагаемым; в противном случае пользователь ограничен выбором варианта из раскрывающегося списка.

При создании виджета

QComboBox
можно указать, открыт ли он для чтения и записи или только для чтения, задавая логическое значение в конструкторе:

QComboBox *combo = new QComboBox(TRUE, parent, "widgetname");

Передача значения

TRUE
переводит
QComboBox
в режим "чтение/запись". Остальные параметры — обычный указатель на родительский виджет и имя создаваемого виджета.

Как все виджеты Qt,

QComboBox
обладает гибкостью и предлагает широкий набор функциональных возможностей.

Вы можете добавлять варианты по одному или набором, как тип

QString
или в стандартном формате
char*
.

Для вставки одного варианта вызовите функцию

insertItem
:

combo->insertItem(QString("An Item"), 1);

Приведенная функция принимает объект типа

QString
и номер позиции в списке. В данном случае 1 вставляет вариант в список первым.

Для добавления в конец списка задайте любое отрицательное целое число.

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

Меченный смертью. Том 2

Юрич Валерий
2. Меченный смертью
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Меченный смертью. Том 2

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

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

Боярышня Евдокия

Меллер Юлия Викторовна
3. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Боярышня Евдокия

Законы Рода. Том 2

Мельник Андрей
2. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 2

Камень. Книга восьмая

Минин Станислав
8. Камень
Фантастика:
фэнтези
боевая фантастика
7.00
рейтинг книги
Камень. Книга восьмая

Я уже царь. Книга XXIX

Дрейк Сириус
29. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я уже царь. Книга XXIX

Эммануэль

Арсан Эммануэль
1. Эммануэль
Любовные романы:
эро литература
7.38
рейтинг книги
Эммануэль

Сотник

Вязовский Алексей
2. Индийский поход
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сотник

Лицеист

Горъ Василий
3. Школяр
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
Лицеист

Жена со скидкой, или Случайный брак

Ардова Алиса
Любовные романы:
любовно-фантастические романы
8.15
рейтинг книги
Жена со скидкой, или Случайный брак

Вечный. Книга V

Рокотов Алексей
5. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга V

Третий. Том 4

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

Лекарь Империи 9

Карелин Сергей Витальевич
9. Лекарь Империи
Фантастика:
городское фэнтези
аниме
боевая фантастика
5.00
рейтинг книги
Лекарь Империи 9

Егерь

Поселягин Владимир Геннадьевич
3. Маньяк в Союзе
Фантастика:
боевая фантастика
альтернативная история
6.31
рейтинг книги
Егерь