当子窗口小部件调整大小时,QMainWindow不会调整大小

时间:2014-12-24 08:26:54

标签: c++ qt

我有以下问题。我有一个QmainWindow,它设置主布局和添加到该布局的小部件。 当我调整窗口小部件的大小时,QmainWindows保持相同的大小。

以下是设置: 在init上的QmainWindow:

this->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

m_mainLayout = new QVBoxLayout();
m_mainLayout->setAlignment(Qt::AlignHCenter);

m_centralWidget = new QWidget();

m_centralWidget->setLayout(m_mainLayout);
setCentralWidget(m_centralWidget);

this->setMinimumSize(800,600);

m_mainLayout->addWidget(m_GLWidget);

然后,在某些时候m_GLWidget发出信号需要调整大小.QmainWindow捕获信号并

重新调整m_GLWidget:

 void MainWindow::ResizeViewportSlot(int w,int h){

  m_GLWidget->setFixedSize(w,h);

  m_GLWidget->updateGeometry();

  this->updateGeometry();


}

1 个答案:

答案 0 :(得分:2)

您可以在构造函数中使用resize(800, 600)而不是setMinimumSize来创建限制。

顺便说一下,虽然这是一个常见的功能,但resize继承自QWidget,许多人(包括我)无法在QMainWindow的文档页面中找到它。

我认为你只是其中一个受害者。

[编辑]

感谢lpapp的评论:

“通常可以点击List of all members, including inherited members链接以获取课程的所有成员。”