创建我的“ EditorView”(一个QGLWidget)时,其大小被调整了两次。它开始于846x630,然后缩小为846x607(丢失了23个像素的高度)。像这样创建:
EditorWindow::EditorWindow() {
Q_INIT_RESOURCE(icons);
readSettings();
setWindowTitle("Q2D Map Editor");
createActions();
createMenus();
createToolBars();
createStatusBar();
editorView = new EditorView;
setCentralWidget(editorView);
}
然后会自动调用两次:
void EditorView::resizeGL(int w, int h) {
printf("%d x %d\n", w, h);
glViewport(0, 0, w, h);
updateView();
}
我认为23像素大约是状态栏的大小,但是在初始化中央小部件之前,状态栏应该已经存在,不是吗?还是由于某种原因而延迟?
呼叫栈1
http://img259.imageshack.us/img259/8881/callstack1.png
呼叫栈2
http://img259.imageshack.us/img259/2200/callstack2.png
最佳答案
您应该在resizeGL方法中设置一个断点,并检查调用堆栈,以查看在两种情况下调用resizeGL的原因是什么。从您提供的代码来看,这并不明显。
关于c++ - Qt Widget在初始化时被调整两次大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1269806/