2009-06-24 19 views
8

我創造了一些圖形數據顯示Qt4的小工具,我很想用QGraphicsScene它,對數據項等創建QGraphicsItem小號我應該如何使用QGraphicsScene與佈局和窗口小部件

然而,我想添加一些控件層(例如,滾動條,縮放+其他按鈕 - 我想使它與Google Maps等類似的風格,也就是說,數據將顯示在整個小部件上,並且按鈕會被顯示在它們上面)到小部件。所以我認爲將它們添加到場景中可能是可行的(也許作爲將在數據上顯示的QGraphicsGroupItem的孩子)。但我希望他們在調整整個窗口小部件時調整&的大小,所以我應該使用QGraphicsLayout來管理它們。但在這一點上,我發現事情非常複雜。

的問題是,使用QGraphicsLayout時,以下限制持有:

  1. 只有QGraphicsWidget可以通過佈局管理
  2. QGraphicsLayout只能用於管理的QGraphicsWidget
兒童

這意味着我將不得不創建我的控件,如QGraphicsWidget s,將頂級QGraphicsWidget添加到數據窗口小部件,並管理t他自己的這個頂級小部件的大小。

所以我要問:

  1. 那不是一個經典的方法(即使用普通的舊部件對所有的控制,並使用QGraphicsScene僅用於顯示數據。)是比較合理的?

  2. 在這種情況下使用QGraphicsScene是否有優勢(性能或簡單...)?

  3. 我應該如何使用QGraphicsScene來發揮其優勢?

回答

1

如果你認爲QGraphicsScene(或任何其他部件必須)是適用於大多數的顯示,使用。我們過去做過的有些類似的事情是製作一個自定義的小部件,它從QWidget繼承(這種或那種方式),並將控件部件放置在該小部件頂部的佈局中。這意味着整個小部件將繪製任何您想要繪製的圖形,而控件小部件則在此之上,調整整個小部件的大小。

或者,我們有幾次佈局,這些佈局對於佈局小部件來說很難處理。我們沒有創建自定義佈局,而是將它們放在沒有佈局的位置,並在調整大小事件的代碼中移動它們。它也可以工作。

+0

與QGraphicsScene最大的問題是,它實際上不是一個小部件。它就像是自動繪製的項目集合(如矩形,橢圓等),可以縮放等等。您所描述的是經典的,簡單的舊窗口小部件方式,我可能會堅持這一點。我想使用「閃亮和新的」功能,但第二個想法,它看起來不像我閃亮,除了有人證明我錯了:) – jpalecek 2009-06-24 21:48:34

6

由於Qt的4.4,你可以通過使用QGraphicsProxyWidget嵌入到QGraphicsScene經典部件:

QWidget *widget = new QWidget; 
QGraphicsScene scene; 
QGraphicsProxyWidget *proxy = scene.addWidget(widget); 
相關問題