Читать книгу 📗 "Основы программирования в Linux - Мэтью Нейл"
QPushButton* button = new QPushButton("Ok", widget, "button"); vbox->addWidget(button); resize(350, 200); connect(button, SIGNAL(clicked()), this, SLOT(Clicked()));}5. Затем приведен удобный метод для вывода состояния заданной кнопки
QButtonvoid Buttons::PrintActive(QButton *button) { if (button->isOn()) std::cout << button->name() << " is checkedn"; else std::cout" << button->name() << " is not checkedn";}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 разных типов. После создания все они по большей части действуют одинаково. Например, функция
PrintActiveQButtonGroupQComboBox
Переключатели (радиокнопки) — отличный способ, позволяющий пользователю выбрать из небольшого числа вариантов, скажем шести или меньше. Если вариантов больше шести, ситуация начинает выходить из-под контроля и становится еще более напряженной, когда количество вариантов растет, что приводит к ощутимому увеличению размера окна. В этом случае прекрасным решением может быть использование поля ввода с раскрывающимся меню, также называемое раскрывающимся списком (combo box). Варианты выводятся, когда вы щелкаете кнопкой мыши и открываете меню и количество вариантов при этом ограничено только удобством поиска в списке.
В виджете
QComboBoxQLineEditQPushButtonQComboBoxПри создании виджета
QComboBoxQComboBox *combo = new QComboBox(TRUE, parent, "widgetname");Передача значения
TRUEQComboBoxКак все виджеты Qt,
QComboBoxВы можете добавлять варианты по одному или набором, как тип
QStringchar*Для вставки одного варианта вызовите функцию
insertItemcombo->insertItem(QString("An Item"), 1);Приведенная функция принимает объект типа
QStringДля добавления в конец списка задайте любое отрицательное целое число.
Гораздо чаще вы будете вставлять несколько элементов списка одновременно, для этого можно применить класс
QStrListchar*char* weather[] = {"Thunder", "Lightning", "Rain", 0};combo->insertStrList(weather, 3);И снова вы можете задать номер позиции вставляемых в список элементов.
Если в виджете
QComboBoxМетод
InsertionPolicyТаблица 17.4
| Значение | Действие |
|---|---|
QComboBox::AtTop | Вставляет вводимый в список элемент первым |
QComboBox::AtBottom | Вставляет вводимый в список элемент последним |
QComboBox::AtCurrent | Заменяет предварительно выбранный вариант в списке |
QComboBox::BeforeCurrent | Вставляет вводимый элемент перед предварительно выбранным вариантом из списка |
QComboBox::AfterCurrent | Вставляет вводимый элемент после предварительно выбранного варианта из списка |
QComboBox::NoInsertion | Новый элемент не вставляется в список вариантов |