在我的项目中,我将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

09-06 14:24