(QT)从按钮的QButtonGroup创建信号?((Qt) Create signal from

2019-10-18 09:18发布

我在这整个事情是如何工作的如此混乱。

我有一些按钮,我投入到这样一个群体:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    AddSlotsToGroup();
}

void MainWindow::AddSlotsToGroup()
{
    QButtonGroup* group = new QButtonGroup(this);
    group->addButton(ui->slot_0);
    group->addButton(ui->slot_1);
    //...
}

我想创建一个插槽得到被点击该组中的按钮的ID。 (很抱歉,如果我解释说不好:()

所以这是我做过什么(纯猜测谷歌搜索后)

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    AddSlotsToGroup();
    connect(QPushButton* group, SIGNAL(buttonClicked(int)), this, SLOT(onGroupButtonClicked(int)));
}

void MainWindow::onGroupButtonClicked(int id)
{
    qDebug() << id;
}

并没有惊喜,我得到了一个错误说基是未声明的标识符和QPushButton是一个非法使用等。

我不想说,我只用信号/从设计师窗缝隙,所以我真的只需要这一个东西,然后我设定的未来。 :)

谢谢你的时间。 :)

Answer 1:

尝试以下方法:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    AddSlotsToGroup();
}

void MainWindow::AddSlotsToGroup()
{
    QButtonGroup* group = new QButtonGroup(this);
    group->addButton(ui->slot_0);
    group->addButton(ui->slot_1);
    //...
    connect(group, SIGNAL(buttonClicked(int)),
            this, SLOT(onGroupButtonClicked(int)));
}

顺便说一句,你需要学习C ++首先要掌握的Qt。



Answer 2:

首先,你需要包括QButtonGroup。

#include <QButtonGroup>

你的连接是畸形的,请先保存“组”指针作为类的成员,然后使用下列内容:

connect(group, SIGNAL(buttonClicked(int)), this, SLOT(onGroupButtonClicked(int)));


文章来源: (Qt) Create signal from QButtonGroup of PushButtons?