欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Qt6.0?qproperty-*不生效原因解決分析

 更新時間:2023年08月24日 11:10:12   作者:點(diǎn)墨  
這篇文章主要為大家介紹了Qt6.0?qproperty-*不生效原因解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

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)文章

  • String類的寫時拷貝實(shí)例

    String類的寫時拷貝實(shí)例

    下面小編就為大家?guī)硪黄猄tring類的寫時拷貝實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • C語言驅(qū)動開發(fā)內(nèi)核特征碼掃描PE代碼段

    C語言驅(qū)動開發(fā)內(nèi)核特征碼掃描PE代碼段

    這篇文章主要為大家介紹了C語言驅(qū)動開發(fā)內(nèi)核特征碼掃描PE代碼段,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • C語言實(shí)現(xiàn)掃雷小游戲(適合初學(xué)者)

    C語言實(shí)現(xiàn)掃雷小游戲(適合初學(xué)者)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)掃雷小游戲,適合初學(xué)者練習(xí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C語言結(jié)構(gòu)數(shù)組實(shí)現(xiàn)貪吃蛇小游戲

    C語言結(jié)構(gòu)數(shù)組實(shí)現(xiàn)貪吃蛇小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言結(jié)構(gòu)數(shù)組實(shí)現(xiàn)貪吃蛇小游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • c++超細(xì)致講解引用

    c++超細(xì)致講解引用

    在我們?nèi)粘5纳钪忻總€人都或多或少存在一個"外號",例如《西游記》中孫悟空就有諸多外號:美猴王,孫行者,齊天大圣等等。那么在C++中,也可以給一個已經(jīng)存在的變量取別名,這就是引用。那么接下來深入來探討一下引用
    2022-05-05
  • C++單鏈表實(shí)現(xiàn)大數(shù)加法

    C++單鏈表實(shí)現(xiàn)大數(shù)加法

    這篇文章主要為大家詳細(xì)介紹了C++單鏈表實(shí)現(xiàn)大數(shù)加法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 編寫C++程序使DirectShow進(jìn)行視頻捕捉

    編寫C++程序使DirectShow進(jìn)行視頻捕捉

    這篇文章主要介紹了如何編寫C++程序來使DirectShow進(jìn)行視頻捕捉的方法,DirectShow是微軟公司在ActiveMovie和Video for Windows的基礎(chǔ)上推出的新一代基于COM(Component Object Model)的流媒體處理的開發(fā)包,要的朋友可以參考下
    2016-03-03
  • C++ Boost Thread線程使用示例詳解

    C++ Boost Thread線程使用示例詳解

    Boost是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱
    2022-11-11
  • C++內(nèi)存對象布局小測試

    C++內(nèi)存對象布局小測試

    這篇文章主要介紹了C++內(nèi)存對象布局小測試,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 詳解C++模板編程中typename用法

    詳解C++模板編程中typename用法

    typename在C++類模板或者函數(shù)模板中經(jīng)常使用的關(guān)鍵字,此時作用和class相同,只是定義模板參數(shù),下面通過例子給大家介紹c++模板typename的具體用法,一起看看吧
    2021-07-07

最新評論