(Qt) Создать сигнал из QButtonGroup кнопок?

Я так запутался, как все это работает.

У меня есть несколько кнопок, которые я помещаю в такую ​​группу:

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

И я хочу создать слот, который получит идентификатор кнопки, которая была нажата в этой группе. (Извините, если я объяснил это плохо:()

Так что это то, что я сделал (чистая догадка после поиска в Google)

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 ответа

Решение

Попробуйте следующее:

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.

Сначала вам нужно включить QButtonGroup.

#include <QButtonGroup>

Ваше соединение повреждено, сначала сохраните указатель "группа" в качестве члена класса, а затем используйте следующее:

connect(group, SIGNAL(buttonClicked(int)), this, SLOT(onGroupButtonClicked(int)));
Другие вопросы по тегам