Qt6.0?qproperty-*不生效原因解決分析
qt樣式屬性
qt的qss樣式是可以使用基本屬性和property屬性的,比如我們想改變組件的minimumSize有兩種方法
1.代碼里寫
qLabel->setMinimumSize (100,200);
2.qss里寫
QLabel{ qproperty-minimumSize:100px 200px; }
但是,你會發(fā)現(xiàn)有些property屬性寫了不生效,比如說(它用了枚舉值)
QLabel{ qproperty-alignment:AlignCenter; }
在有些論壇里有說是可以這么寫的
什么原因呢?估計是在舊版本里Qt對AlignCenter字符串做了解析,新版本里不再識別它了,那么怎么解決呢?使用Qt::AlignCenter或Qt.AlignCenter?都是不行的,我們知道枚舉值默認(rèn)情況下都是int型的,那么我們直接設(shè)置int是不是就可以?
ok,那么我們打印下AlignCenter的值
qDebug() << Qt::AlignCenter << static_cast<int>(Qt::AlignCenter);
QLabel{ background-color:red; qproperty-alignment:132; }
ok,它生效了~
但是寫這個我們還得去查AlignCenter對應(yīng)的值,太麻煩了,怎么做才能實(shí)現(xiàn)跟QT4一樣,我寫AlignCenter你就幫我居中呢?
在setStyleSheet前增加內(nèi)容處理,對樣式文件內(nèi)容進(jìn)行正則替換,把寫的枚舉變量替換成真正的枚舉值即可。
方法定義和實(shí)現(xiàn)
template <typename T> void insertQtStyleEnumMap(); QString replaceQtStyleEnumValue(const QString &str); QMap<QString, int> m_qtStyleEnumMap; QString StyleHelper::replaceQtStyleEnumValue(const QString &str) { QString result = str; QMap<QString, int>::Iterator it = m_qtStyleEnumMap.begin(); while (it != m_qtStyleEnumMap.end()) { result.replace(it.key(), QString::number(it.value())); it++; } return result; } template <typename T> void StyleHelper::insertQtStyleEnumMap() { QMetaEnum metaEnum = QMetaEnum::fromType<T>(); for (int i = 0; i < metaEnum.keyCount(); i++) { m_qtStyleEnumMap.insert(metaEnum.key(i), metaEnum.value(i)); } }
insertQtStyleEnumMap<Qt::Alignment>();//在初始化的時候調(diào)用 style = replaceQtStyleEnumValue(style); //setStyleSheet前替換枚舉變量 qApp->setStyleSheet(style);
這個時候樣式再寫
QLabel{ background-color:red; qproperty-alignment:AlignCenter; }
就跟寫132是一樣的了
以上就是Qt6.0 qproperty-*不生效原因解決分析的詳細(xì)內(nèi)容,更多關(guān)于Qt6.0 qproperty-*不生效的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C語言驅(qū)動開發(fā)內(nèi)核特征碼掃描PE代碼段
這篇文章主要為大家介紹了C語言驅(qū)動開發(fā)內(nèi)核特征碼掃描PE代碼段,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10C語言實(shí)現(xiàn)掃雷小游戲(適合初學(xué)者)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)掃雷小游戲,適合初學(xué)者練習(xí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-03-03C語言結(jié)構(gòu)數(shù)組實(shí)現(xiàn)貪吃蛇小游戲
這篇文章主要為大家詳細(xì)介紹了C語言結(jié)構(gòu)數(shù)組實(shí)現(xiàn)貪吃蛇小游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10