2013-07-15 18 views
1

我很困惑這整個事情是如何工作的。(Qt)從QButtonGroup的PushButtons創建信號?

我有一些按鈕,我把成團這樣的:

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

嘗試以下操作:

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。

+0

這工作完全:)我不能感謝你纔好!一個簡單的問題,但。在我的插槽, 「無效的MainWindow :: onGroupButtonClicked(INT ID)」 我這樣做 「qDebug()<< ID;」 和我的輸出總是一個負數......這是爲什麼? – mrg95

+1

關於addButton的文檔...「自動分配的ID保證是否定的,從-2開始,如果您也分配了自己的ID,請使用正值來避免衝突。」 ...這些ID總是消極的。 – bkausbk

+0

謝謝你:)我會考慮添加id,因爲我正在添加按鈕 – mrg95

2

首先你需要包含QButtonGroup。

#include <QButtonGroup> 

你的連接是畸形的,請先保存「組」指針作爲類的成員,然後使用下列內容:

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

是的,我已經添加了包含語句。我從來沒有學過什麼課,因爲我還在學習C++。感謝您的回答 :) – mrg95