我有一個帶有透明背景的QDockWidget,但我想在浮動時更改背景顏色或背景圖像。它看起來並不像qt樣式表有一個僞狀態來告訴你它們是否浮動,所以我想知道:這是可能做到的嗎?QDockWidget浮動時更改背景顏色
1
A
回答
3
找到了解決辦法。添加代碼以下連接:
connect(knobDock, &QDockWidget::topLevelChanged, [&] (bool isFloating)
{
if (isFloating)
{
setAttribute(Qt::WA_TranslucentBackground, false);
setAttribute(Qt::WA_NoSystemBackground, false);
}
});
這將導致碼頭widgetto使用任何背景時船塢浮在樣式表中指定,但它會是透明的(即顯示主窗口背景),當它停靠。
0
您可以使用自定義屬性來執行此操作。
謝謝@phyatt鏈接到Dynamic Properties and Stylesheets。
要在自定義類中聲明自定義屬性,你可以在寫的.cpp:
setProperty("customPropertyName", 1);
或.H(不要忘記過定義和實現用的get/set訪問方法):
Q_PROPERTY(int customPropertyName, READ getCustomPropertyName, WRITE setCustomPropertyName);
而且在全局樣式表文件,您可以使用自定義屬性的狀態如下:
.YourClass[customPropertyName="1"] {
background-color: transparent;
}
.YourClass[customPropertyName="2"] {
background-color: black;
}
此外它需要你的一套新的屬性值後重新加載對象實例的樣式,因爲樣式表不會自動重新計算:
object->style()->unpolish(tstFrame);
object->style()->polish(tstFrame);
object->update();
或:
object->setStyleSheet("/* */");
相關問題
- 1. jQuery在更改時動態更改顏色/背景顏色
- 2. 滾動時更改Tablayout背景顏色
- 3. 更改背景顏色3
- 4. jqueryMobile更改背景顏色
- 5. 更改背景顏色tabhost
- 6. 更改UIButton背景顏色
- 7. 更改背景顏色8
- 8. WL.SimpleDialog更改背景顏色
- 9. 更改背景顏色
- 10. UICollectionViewCell更改背景顏色
- 11. 更改QLPreviewController背景顏色
- 12. 更改背景顏色
- 13. 更改UIAlertcontroller背景顏色
- 14. 更改TToolBar背景顏色
- 15. Gnuplot - 更改背景顏色
- 16. select2更改背景顏色
- 17. 更改fancybox2背景顏色
- 18. 更改背景顏色
- 19. 更改DIV背景顏色
- 20. 更改背景顏色
- 21. 更改Listitem背景顏色
- 22. QMenu更改背景顏色
- 23. 更改背景顏色
- 24. 更改HighCharts背景顏色?
- 25. 更改背景顏色
- 26. model.addrow()更改背景顏色
- 27. 更改背景顏色
- 28. 更改UITableViewController背景顏色
- 29. 更改背景顏色
- 30. Bootstrap:更改背景顏色
我在其他地方的代碼中有自定義屬性,但存在一個嚴重的缺陷:屬性更改不會重新加載樣式表,您必須在每次屬性更改時重新加載並重新更新它,這將花費〜10秒,我用的紋理。你的例子實際上也稱這是一個壞方法。 – 2014-09-30 20:00:31
@NicolasHolthaus,我在最後加了一個註釋,如果你使用全局樣式表,你可以只更新需要重新計算的對象的樣式表,希望這有助於 – 2014-09-30 20:15:06
http://qt-project.org/維基/ DynamicPropertiesAndStylesheets – phyatt 2014-09-30 20:18:02