在qt之qss(q_property-原始屬性)一節我們分享了q_property-原始屬性的用法,但通常情況下我們需要很多自定義樣式,例如:動態獲取qss樣式,這時自定義屬性就能很好的發揮其用武之地了。
更多參考
在使用qabstractitemmodel、qabstractitemdelegate更新**樣式的時候,比如:背景色、前景色等,我們通常的做法是定義一些顏色常量,然後根據不同的條件顯示不同的顏色,要麼就是通過qss全域性設定,讓所有的背景色、前景色保持一致。
這有乙個問題,侷限性太強,無法動態獲取顏色值,大大降低了程式的擴充套件性。
qabstractitemmodel、qabstractitemdelegate均繼承自qobject,而qss只能用於qwidget及其子孫類,那麼,如何動態獲採樣式屬性值呢?
三部曲:
其中,q_property宣告有以下要求:
建立乙個從qwidget繼承的專用類styledwidget,為其新增自定義屬性,並使用q_property宣告:
styledwidget.h
#ifndef styled_widget
#define styled_widget
#include
class styledwidget : public qwidget
;#endif // styled_widget
styledwidget.cpp
...
qcolor styledwidget::normalcolor() const
void styledwidget::setnormalcolor(qcolor color)
...
qss中使用自定義的屬性設定對應的樣式:
styledwidget
在需要設定樣式的類中宣告styledwidget:
class tablemodel : public qabstracttablemodel
;
使用自定義屬性設定樣式:
qvariant tablemodel::data(const qmodelindex &index, int role) const
...}
return qvariant();
}
QT之Qt之Q PROPERTY巨集理解
qt中的q property巨集在qt中是很常用的,那麼它有什麼作用呢?qt提供了乙個絕妙的屬性系統,q property 是乙個巨集,用來在乙個類中宣告乙個屬性property,由於該巨集是qt特有的,需要用moc進行編譯,故必須繼承於qobject類。q property type name r...
Qt系列 之Qt之打包發布
date 2019 1 31 發布方式 qt發布的時候,通常使用兩種方式 1 靜態編譯 2 動態編譯 靜態編譯 把相關聯的庫一併引入可執行程式,雖然發布簡單,但可執行程式較大。動態編譯 相關聯的庫,以dll的形式引用,不被包含進可執行程式,發布不方便,但可執行程式較小。靜態發布雖然不需要較多的dll...
Qt之QAbstractItemView右鍵選單
說起右鍵選單,之前qt之自定義qlineedit右鍵選單 這篇文章中我已經講述過3種右鍵選單的實現方式,今兒也是在囉嗦一下,針對qlistwidget類在定製一下右鍵選單,我使用的具體方式呢,是直接重寫了contextmenuevent方法,在這個方法中彈出右鍵選單。如圖1是針對qlistwidge...