gpt4 book ai didi

c++ - Qt:如何让mainWindow在centralwidget调整大小时自动调整大小?

转载 作者:可可西里 更新时间:2023-11-01 18:39:45 28 4
gpt4 key购买 nike

我想让我的 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com