QRadioButton *radiobutton1, *radiobutton2;
private slots:
void Clicked;
}
3. Далее следует файл Buttons.срр:
#include "Buttons.moc"
#include
#include
#include
#include
#include
#include
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
для того, чтобы гарантировать активность только одной радиокнопки в группе в любой момент времени.Переключатели (радиокнопки) — отличный способ, позволяющий пользователю выбрать из небольшого числа вариантов, скажем шести или меньше. Если вариантов больше шести, ситуация начинает выходить из-под контроля и становится еще более напряженной, когда количество вариантов растет, что приводит к ощутимому увеличению размера окна. В этом случае прекрасным решением может быть использование поля ввода с раскрывающимся меню, также называемое раскрывающимся списком (combo box). Варианты выводятся, когда вы щелкаете кнопкой мыши и открываете меню и количество вариантов при этом ограничено только удобством поиска в списке.
В виджете QComboBox
QLineEdit
и QPushButton
и раскрывающихся меню, позволяя выбрать один вариант из неограниченного набора вариантов.QComboBox
При создании виджета QComboBox