2014-11-08 102 views
2

我有一個問題創建QPushButton與信號和插槽。首先,我創建一個類在哪裏插槽:c + + QPushButton信號和插槽

class A : public QWidget{ 

    public slots: 
void handleButton(); 

}; 

還有就是我handleButton功能: 中的.cpp

void A::handleButton(int row, int col){ 
    m_button->setText("Example"); 
    // resize button 
    m_button->resize(100,100); 
     } 

然後我想連接按鈕。

  QObject::connect(m_button, SIGNAL(clicked()),qApp, SLOT(handleButton())); 

但是,當我啓動應用程序,我得到一個錯誤: 「沒有這樣的插槽」 任何人能幫助我嗎?

+0

qApp是類A的一個實例嗎?而且簽名是錯誤的 – 2014-11-08 14:33:24

+0

即時通訊新的C++我不知道如何設置正確的實例。 – user3730912 2014-11-08 14:35:23

+0

如果qApp不是類A的對象,則它不具有該插槽。 – 2014-11-08 14:36:09

回答

1

你有一些錯誤這段代碼,如果你定義了「void handlebutton()」,那麼你必須實現void handlebutton(),而不是無效的handlebutton(inx x,int y)這段代碼甚至不應該編譯。你可以只使用相同的參數連接SIGNAL和SLOTS,所以你可以連接SIGNAL(clicked())和SLOT(handlebutton()),但不能SIGNAL(點擊()和SLOT(handleButton(int, 。INT))

另一個問題是連接在運行時執行的,所以你必須編譯並運行之前的Qt可以告訴你錯誤

因此,一個可能的解決方案是:

定義和實現的槽void handlebutton()並將它連接到信號clicked(),然後定義另一個方法handleButton(int x,int y),您將調用它m裏面的handleButton()。

我真的希望對你有意義。

0

您的類定義應該是這樣的:

class A : public QWidget 
{ 
Q_OBJECT 
public slots: 
    void handleButton(int, int); 
}; 

你應該將它連接想:

QObject::connect(m_button, SIGNAL(clicked()),qApp, SLOT(handleButton(int a, int b))); 

其中ab是行和列變量。

這應該工作。嘗試瞭解基本的C++。 :)