我想让我的 CentralWidget 有一定的大小。我需要做什么才能使我的 mainWindow 沿着它的中央小部件调整大小?这是不起作用的代码:
int main (int argc, char **argv) {
QApplication app(argc, argv);
QGLFormat glFormat;
glFormat.setVersion(4,2);
glFormat.setProfile( QGLFormat::CompatibilityProfile);
QGLWidget* render_qglwidget = new MyWidget(glFormat);
QGLContext* glContext = (QGLContext *) render_qglwidget->context();
glContext->makeCurrent();
QMainWindow* mainWindow = new MyMainWindow();
render_qglwidget->resize(720, 486);
mainWindow->setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding));
mainWindow->setCentralWidget(render_qglwidget);
render_qglwidget->resize(720, 486);
mainWindow->show();
return app.exec();
}
打开的窗口会很小。
我可以使用设置主窗口的大小
mainWindow->resize(720, 486);
并且centralwidget也会改变它的大小。但是中央小部件将被稍微压扁,因为主窗口的工具栏也位于这 486 像素内。
如何让主窗口自动调整大小?
最佳答案
您可以重新实现 QMainWindow::event()
以在中央小部件的大小发生变化时自动调整窗口大小:
bool MyMainWindow::event(QEvent *ev) {
if(ev->type() == QEvent::LayoutRequest) {
setFixedSize(sizeHint());
}
return result = QMainWindow::event(ev);
}
您还必须为中央小部件使用 setFixedSize()
而不仅仅是 resize()
。当小部件放置在布局(这里是 QMainWindowLayout
)内部时,后者几乎没用。
关于c++ - Qt:如何让mainWindow在centralwidget调整大小时自动调整大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9762299/