在我的项目中,我将40个QPushButton
都放入了QButtonGroup
中,如下所示:
QButtonGroup* group = new QButtonGroup(this);
group->addButton(ui->slot_0);
group->addButton(ui->slot_1);
//...
group->addButton(ui->slot_38);
group->addButton(ui->slot_39);
每个按钮都是我可以检查的
QPushButton
。这样,一次只能检查一个按钮。一切正常,但是当其中一个按钮被选中时,如何“插入插槽”?我不想有40个不同的插槽,每个按钮都有一个插槽,它们最终会做基本上相同的事情。有什么办法可以使用我放入的QButtonGroup
吗? 最佳答案
正如Jamin和Nikos所说:您应该创建自己的插槽来处理QButtonGroup发出的信号。可能是这样的:
在头文件中:
public slots:
void buttonWasClicked(int);
在* .cpp文件中:
void MainWindow::buttonWasClicked(int buttonID)
{
cout << "You have clicked button: " << buttonID << endl;
}
在负责创建MainWindow的代码中(即,在构造函数中,但不是必需的),应该有以下行:
connect(group, SIGNAL(buttonClicked(int)), this, SLOT(buttonWasClicked(int)));
请注意,自Qt5起,连接语法已更改。我在这里使用的语法来自Qt4。它仍然可以使用,但是现在不推荐使用(有关更多信息,请引用New Signal Slot Syntax in Qt 5)。此外,我建议您遍历QButtonGroup类引用,因为还有其他可用的信号可能比我选择的信号更适合您的需求。
BR