我需要更改mainwindow或其他類中的本機應用程序大小width x height,而不是在mainwindow類中。我怎樣才能做到這一點?如何更改其他類不是mainwindow類中的應用程序大小?
void OptionsDialog::resetWindowLayoutClicked(QResizeEvent* event) {
QMainWindow::resize(640, 483);
}
這是我第一次嘗試但沒有幸福。
我需要更改mainwindow或其他類中的本機應用程序大小width x height,而不是在mainwindow類中。我怎樣才能做到這一點?如何更改其他類不是mainwindow類中的應用程序大小?
void OptionsDialog::resetWindowLayoutClicked(QResizeEvent* event) {
QMainWindow::resize(640, 483);
}
這是我第一次嘗試但沒有幸福。
我會發出一個信號並將它連接到主窗口中的一個插槽。
例如:
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);
}
您需要獲取指向我假設的主窗口類的指針並從中更改它,請嘗試在新的類構造函數中將指針傳遞給它。
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);
}
不會與工作一個指向const的指針。你可能想要使用一個const指針,但更好的辦法是使用一個智能指針類(std或Qt's)。連接到按鈕後還是之前的 –
? –
你在OptionsDialog的構造函數中連接你的按鈕,對吧?如果在連接resizeRequest插槽之前沒有顯示對話框,則首先連接哪一個並不重要。 –
我可以寄給你完整的源代碼嗎?我有很多麻煩讓它工作 –