2011-11-25 37 views

回答

1

我會發出一個信號並將它連接到主窗口中的一個插槽。

例如:

class OptionsDialog : public QDialog 
{ 
    Q_OBJECT 
signals: 
    void resize(int w, int h); 
}; 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 
private slots: 
    void resizeRequest(int w, int h); 
}; 

void OptionsDialog::resetWindowLayoutClicked(QResizeEvent* event) 
{ 
    emit resize(640, 483); 
} 

當您創建OptionsDialog,連接信號是這樣的:

OptionsDialog* d = new OptionsDialog(this); 
connect(d, SIGNAL(resize(int,int)), this, SLOT(resizeRequest(int,int))); 

貫徹插槽:

void MainWindow::resizeRequest(int w, int h) 
{ 
    resize(w, h); 
} 
+0

? –

+0

你在OptionsDialog的構造函數中連接你的按鈕,對吧?如果在連接resizeRequest插槽之前沒有顯示對話框,則首先連接哪一個並不重要。 –

+0

我可以寄給你完整的源代碼嗎?我有很多麻煩讓它工作 –

0

您需要獲取指向我假設的主窗口類的指針並從中更改它,請嘗試在新的類構造函數中將指針傳遞給它。

public OptionsDialog(const QMainWindow * mainWindow) { // class constructor 
    m_qWinPtr = mainWindow // this is some class member 
} 

void OptionsDialog::resetWindowLayoutClicked(QResizeEvent* event) { 
    m_qWinPtr->resize(640, 483); 
} 
+0

不會與工作一個指向const的指針。你可能想要使用一個const指針,但更好的辦法是使用一個智能指針類(std或Qt's)。連接到按鈕後還是之前的 –

相關問題