我需要類似範圍滑塊(具有用於設置最小/最大值的兩個手柄的滑塊)。爲什麼RangeSlider在QtQuick中可用,而不是標準Widget
我注意到在QtQuick和QML中有一個RangeSlider
(不管是什麼),但是沒有'標準小部件',如QRangeSlider
。
這是爲什麼?
我可以在不寫QML代碼的情況下使用QtQuick的RangeSlider
嗎?
我需要類似範圍滑塊(具有用於設置最小/最大值的兩個手柄的滑塊)。爲什麼RangeSlider在QtQuick中可用,而不是標準Widget
我注意到在QtQuick和QML中有一個RangeSlider
(不管是什麼),但是沒有'標準小部件',如QRangeSlider
。
這是爲什麼?
我可以在不寫QML代碼的情況下使用QtQuick的RangeSlider
嗎?
由於Qt Widgets是一個「舊」庫,而且Qt開發人員,特別是Qt公司,除了必要的缺陷修復之外,並不適用於它。
儘管Qt Quick Controls(1和2)更新,並且得到了所有人的關注。
此外,Qt Quick和Qt Widgets的內容之間沒有任何關聯,它們完全不相關的庫,即更改或更新一個不會導致另一個的更改或更新。
(因爲Qt Quick的控制1使用Qt小工具,做一些造型並非完全正確,但據公開可用的組件而言這適用)
你一般不能混用Qt控件和Qt Quick的組件,這些組件以完全不同的方式呈現,Qt Widgets使用QPainter,而Qt Quick則使用SceneGraph。但是您可以使用QQuickWidget在Qt Widgets應用程序中渲染Qt Quick場景,以便您可以製作一個內部顯示Qt Quick RangeSlider的RangeSlider小部件。
我如何使用從QtQuick那麼這些窗口小部件之一? – manatttta
@manatttta我已經更新了我的答案,它應該回答你的問題。 –
由於RangeSlider
是你需要使用它QML上下文QML類型。QQuickWidget
只是一個QWidget
,專門在加載和顯示QML內容。事實上,它只是它的另一個子類,使您可以將它集成到您選擇的QWiget
中。對於如何將這兩個集成的例子見here(示例中使用QMainWindow
,但你可以使其適應您的需求
我在標準QWidget
這個失蹤的UI組件的猜測是:
QSlider
(example)QSpinBox
ES等更好的解決辦法是放棄了QML的東西此並用C++實現你自己的版本。
'QGraphicsScene'不再作爲自Qt 5以來Qt Quick的後端。 –
您是對的。我已經忘記了這一點。但是你仍然可以使用'QQuickWidget'來加載'QWidget'內的QML內容,並在QML和C++代碼之間建立所需的連接。 – rbaleksandar
這是一個可怕的想法! Creste一個qml上下文來顯示一個小部件!?爲什麼不在你使用webkit的時候加載webkit,或者啓動一個python的實例。 –
此風格是由您定義的,還是操作系統的默認設置?或者更糟的是,這個小部件定義了這種風格嗎? – manatttta
這是一張來自Common TK網站(http://www.commontk.org/index.php/Documentation/ImageGallery)的截圖。它看起來像Gnome風格,但我認爲你可以使用Qt樣式表來定製它 –
在我的應用程序中,它看起來像這樣(使用Linux KDE):http://www.qlcplus.org/features/vcxypad.png。在任何情況下,風格取決於操作系統 –