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);
    //...
}

我想创建一个插槽来获取在该组中单击的按钮的 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;
}

毫不奇怪,我收到一个错误,说 group 是一个未声明的标识符,并且 QPushButton 是非法使用等。

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

谢谢你的时间。:)

4

2 回答 2

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。

于 2013-07-15T06:29:34.287 回答
2

首先,您需要包含 QButtonGroup。

#include <QButtonGroup>

您的连接格式错误,请先将“组”指针保存为类成员,然后使用以下内容:

connect(group, SIGNAL(buttonClicked(int)), this, SLOT(onGroupButtonClicked(int)));
于 2013-07-15T06:29:43.823 回答