如何在其他类中更改应用程序大小而不是mainwindow类?

时间:2011-11-25 22:00:55

标签: c++ qt

我需要在主窗口类中不更改其他类中的主窗口或本机应用程序大小width x height。我怎么能这样做?

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

这是我的第一次尝试,但没有幸福。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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);
}