【问题标题】:(Qt) Create signal from QButtonGroup of PushButtons?(Qt)从按钮的 QButtonGroup 创建信号?
【发布时间】:2013-07-15 06:15:14
【问题描述】:

我对整个事情的运作方式感到非常困惑。

我将一些按钮放入这样的组中:

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

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

感谢您的宝贵时间。 :)

【问题讨论】:

    标签: c++ qt signals-slots qpushbutton


    【解决方案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。

    【讨论】:

    • 这工作完美:) 我非常感谢你!一个快速的问题。在我的插槽中,“void MainWindow::onGroupButtonClicked(int id)”我做了这个“qDebug()
    • 关于 addButton 的文档... “自动分配的 id 保证为负,从 -2 开始。如果您还分配自己的 id,请使用正值以避免冲突。” ...这些 id 总是负数。
    • 谢谢 :) 我会在添加按钮时考虑添加 id
    【解决方案2】:

    首先你需要包含 QButtonGroup。

    #include <QButtonGroup>
    

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

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

    【讨论】:

    • 是的,我已经添加了包含语句。我还没有学过什么是类,因为我还在学习 C++。谢谢你的回答:)
    猜你喜欢
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 2017-03-11
    • 2017-09-04
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    相关资源
    最近更新 更多