创建我的“ 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/

10-10 16:53