(Qt)从QButtonGroup的PushButton创建信号?

时间:2013-07-15 06:15:14

标签: c++ qt signals-slots qpushbutton

我对这整件事如何运作感到困惑。

我有一些按钮,我把它放到这样一个组中:

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是非法使用等。

我不想说我只使用了设计师窗口中的信号/插槽,所以我真的只需要这一件事,然后我就会为未来做好准备。 :)

感谢您的时间。 :)

2 个答案:

答案 0 :(得分:2)

尝试以下方法:

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。

答案 1 :(得分:2)

首先,您需要包含QButtonGroup。

#include <QButtonGroup>

您的连接格式不正确,请先将“group”指针保存为类成员,然后使用以下命令:

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