2016-10-10 84 views
-1

我不能爲我的生活弄清楚爲什麼我的功能連接後沒有被正確調用。Qt插槽功能未被調用

.h文件中

class NewCustomer : public QObject { 
    Q_OBJECT 

    public: 
    QWidget* newCustomer = new QWidget; 
    QDialogButtonBox* buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); 

    NewCustomer(QObject *parent); 
    ~NewCustomer(); 

    private slots: 
    void aAccepted(); 
}; 

.cpp文件

void thisfunctionworksthough() { 
    QMessageBox msgBox; 
    msgBox.setText("The document has been modified."); 
    msgBox.exec(); 
} 

NewCustomer::NewCustomer(QObject *parent) : QObject(parent) { 
    connect(this->buttonBox, &QDialogButtonBox::accepted, this, &NewCustomer::aAccepted); 
    connect(buttonBox, &QDialogButtonBox::rejected, thisfunctionworksthough); 
    newCustomer->setMinimumSize(700, 600); 
    newCustomer->show(); 
} 

void NewCustomer::aAccepted() { 
    QMessageBox msgBox; 
    msgBox.setText("The document has been modified."); 
    msgBox.exec(); 
} 

自由功能的作品,但在一個定義爲槽不裏面的類。爲什麼?

+1

一個映射到Ok按鈕(接受),另一個映射到取消按鈕(被拒絕)。當我按確定沒有任何反應,當我按下取消時,我收到消息。 – Eejin

+1

這段代碼是否編譯? – HazemGomaa

+0

@ H.G是的,雖然我刪除了包含和一些其他小部件來做一個簡單的例子。 – Eejin

回答

0

這對我來說非常愚蠢,但顯然我是通過值創建了類實例,所以在範圍結束時它被刪除了。我確信它不會很快從內存中解脫出來,現在它就像一個魅力。