Как я могу изменить размер приложения в других классах, кроме класса mainwindow? - PullRequest
0 голосов
/ 26 ноября 2011

Мне нужно изменить размер основного окна или собственного приложения шириной x высотой в другом классе, кроме класса основного окна.Как я могу это сделать?

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

Это моя первая попытка, но без счастья.

Ответы [ 2 ]

1 голос
/ 26 ноября 2011

Я бы сделал сигнал и подключил его к слоту в главном окне.

Например:

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* 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 голосов
/ 26 ноября 2011

Вам нужно получить указатель на класс главного окна, который я предполагаю, и изменить его, попробуйте передать указатель на него в конструкторе нового класса.

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...