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;
}

当然のことながら、グループは宣言されていない識別子であり、QPushButton は不正な使用であるなどのエラーが表示されました。

デザイナー ウィンドウからのシグナル/スロットしか使用していないとは言いたくないので、本当にこれが 1 つあれば、将来に備えることができます。:)

御時間ありがとうございます。:)

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

ちなみに、Qt を使いこなすには、まず C++ を学ぶ必要があります。

于 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 に答える