2009-08-13 46 views
0

我的「EditorView」(一個QGLWidget)在創建時被調整大小兩次。它開始於846x630,然後縮小到846x607(高度減少23像素)。創建這樣的:Qt Widget在初始化時被調整大小兩次?

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

回答

3

應設置在resizeGL方法中設置斷點,並檢查調用堆棧,看看,在這兩個情況下,調用resizeGL的原因是什麼。從你提供的代碼來看,這並不明顯。

+1

是啊...它看起來像佈局還沒有完成初始化(見屏幕)。那真是愚蠢。噢,這不是一個大問題。只是意味着我的圖形不是很集中。 – mpen 2009-08-14 01:53:06