2013-10-14 33 views
0

我是Qt編程新手,正在開發一個繪圖應用程序。我有一個MyWidget類,它有一個成員QGraphicsView。 MyWidget是另一個類MainWidget的成員(它也有其他小部件,並且它們都在佈局中).MainWidget是QMainWindow子類的中心部件。如何獲取佈局中的QGraphicsView的大小?

我已經創建了一些函數來縮放與鼠標滾輪事件的視圖和拖動場景的功能。

問題是 - 我想設置場景的大小是固定的,並且是視圖大小的3倍,但由於視圖是通過佈局管理的,爲了儘可能多地佔用空間,我可以沒有看到視圖的大小?

任何幫助表示讚賞。

回答

0

size屬性會給你當前大小小工具的:

http://qt-project.org/doc/qt-4.8/qwidget.html#size-prop

或者,你可以繼承的QGraphicsView和重新實現resizeEvent

http://qt-project.org/doc/qt-4.8/qwidget.html#resizeEvent

舉一個完整的例子,看看:

http://qt-project.org/doc/qt-4.8/widgets-scribble.html

+0

謝謝@Hurzelchen。大小函數幫助我,我設法做到了我想要的,而不是繼承QGraphicsView,但我仍然有問題。 只有當主窗口最大化時(爲了獲得視圖的最大可見區域),我才設置場景的大小。爲此我嘗試了showMaximized(),但它不能正常工作,所以我重新實現了QMainwindow :: changeEvent,並檢查狀態是否爲windowMaximized。這似乎工作,一切都很好,但只有當你點擊窗口框架的最大化按鈕後。 任何想法如何解決這個問題?謝謝您的幫助! – Expr

0

你一定可以得到視圖的大小。有兩種方法去做:

  1. 附加一個事件過濾器對象,以您的觀點:myView->installEventFilter(filterObject)。將調用filterObjecteventFilter方法來訪問您的視圖的所有事件,包括調整大小事件。

  2. 使用自定義視圖類和重新實現resizeEvent。每次調整窗口小部件時,都會調用此方法。請注意,設計器允許您添加自定義類而不必編寫插件。

相關問題