日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Qt之QSS(动态属性)

發布時間:2024/6/21 综合教程 40 生活家
生活随笔 收集整理的這篇文章主要介紹了 Qt之QSS(动态属性) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡述

QSS可以定制應用程序的外觀,無需關注Qt樣式背后的魔力。從非常輕微到極其復雜的調整,樣式表都可以做到。對于一個完全定制和獨特的用戶體驗,QtQuick和QGraphicsView是更好的選擇。

簡述
自定義屬性
限制
示例
效果
源碼
QSS

更多參考

自定義屬性

為了用戶界面外觀的動態變化,屬性選擇器可以與動態屬性組合使用。動態屬性在Qt4.2中引入,允許為編譯時不存在的QObject屬性分配屬性值。即:如果為QObject設置一個urgent屬性為true,該屬性將跟隨該類,但不會為urgent屬性包含一個Q_PROPERTY宏。

創建樣式選擇器依賴于動態屬性,例如:urgent,可以用一個非常動態的方式凸顯用戶界面。例如:

QLineEdit[urgent=true] {
  color: red;
}

限制

使用這種方式有局限性。最主要的是,當一個屬性值變化時,所引用的樣式不會自動更新。相反地,必須手動觸發更新才會生效。

unpolish()用于清理之前的樣式,而polish()則用于添加新的樣式。

例如:

myLineEdit->setProperty("urgent", true);
myLineEdit->style()->unpolish(myLineEdit);
myLineEdit->style()->polish(myLineEdit);

注意:必須在部件的樣式中使用,QStyle::polish既接受QWidge也接受QApplication作為參數。

示例

以自定義標題欄中的最大化/還原按鈕為例,進行切換。

效果

源碼

void TitleBar::updateMaximize()
{
    QWidget *pWindow = this->window();
    if (pWindow->isTopLevel())
    {
        bool bMaximize = pWindow->isMaximized();
        m_pMaximizeButton->setToolTip(bMaximize ? tr("Restore") : tr("Maximize"));
        m_pMaximizeButton->setProperty("maximizeProperty", bMaximize ? "restore" : "maximize");

        // 手動更新樣式
        m_pMaximizeButton->style()->unpolish(m_pMaximizeButton);
        m_pMaximizeButton->style()->polish(m_pMaximizeButton);
        m_pMaximizeButton->update();
        //m_pMaximizeButton->setStyle(QApplication::style());
    }
}

使用屬性選擇器的時候,如果之前已經有了樣式,那么,需要重新設置一下,使用了unpolish()與polish()。當然,也可以不用那么復雜,直接使用setStyle(QApplication::style())也可以搞定。

QSS

QPushButton#maximizeButton[maximizeProperty="maximize"] {
        border-radius: none;
        border-bottom-left-radius: 4px;
        border-bottom-right-radius: 4px;
        background: rgb(50, 50, 50);
        image: url(:/Images/maximize);
}
QPushButton#maximizeButton[maximizeProperty="maximize"]:hover {
        background: rgb(60, 60, 60);
        image: url(:/Images/maximizeHover);
}
QPushButton#maximizeButton[maximizeProperty="maximize"]:pressed {
        background: rgb(55, 55, 55);
        image: url(:/Images/maximizePressed);
}
QPushButton#maximizeButton[maximizeProperty="restore"] {
        border-radius: none;
        border-bottom-left-radius: 4px;
        border-bottom-right-radius: 4px;
        background: rgb(50, 50, 50);
        image: url(:/Images/restore);
}
QPushButton#maximizeButton[maximizeProperty="restore"]:hover {
        background: rgb(60, 60, 60);
        image: url(:/Images/restoreHover);
}
QPushButton#maximizeButton[maximizeProperty="restore"]:pressed {
        background: rgb(55, 55, 55);
        image: url(:/Images/restorePressed);
}

更多參考

Qt之加載QSS文件
Qt之QSS(語法高亮)
Qt之QSS(樣式表語法)
Qt之QSS(Q_PROPERTY-原始屬性)
Qt之QSS(Q_PROPERTY-自定義屬性)
Qt之QSS(QDarkStyleSheet)
Qt之QSS(黑色炫酷)
Qt之QSS(白色靚麗)
Qt之界面換膚

總結

以上是生活随笔為你收集整理的Qt之QSS(动态属性)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。