QT開発(68)-QSSアプリケーションの動的属性

QT開発(68)-QSSアプリケーションの動的属性

このブログ投稿は、ErsanliのYiquのブログから複製されています:http://blog.csdn.net/liang19890820

1.構文の強調表示設定
QtCreatorはデフォルトでqssファイル(* .qss)を開き、強調表示されません。読み方に合わせてコードスニペットをより見事に表示するには、手動で構成する必要があります。

構成プロセスは次のとおりです。

A、进入:工具 -> 选项 -> 环境 -> MIME 类型。

B、在【已注册的MIME类型】处输入“text/css”可以快速定位,然后在【详情】中的“模式”处添加 *.qss,即将原来的“模式”改为:*.css;*.CSSL;*.qss。

注:セミコロン(;)で区切ります

ここに画像の説明を挿入
効果は次のとおりです
ここに画像の説明を挿入
。2。動的属性
1.カスタム属性
ユーザーインターフェイスの外観を動的に変更するために、属性セレクターを動的属性と組み合わせて使用​​できます。動的属性はQT4.2で導入され、コンパイル時に存在しないQObject属性に属性値を割り当てることができるようになりました。つまり、QObjectの緊急属性をtrueに設定すると、属性はクラスに従いますが、緊急属性のQ_PROPERTYマクロは含まれません。

创建样式选择器依赖于动态属性,例如:urgent,可以用一个非常动态的方式凸显用户界面。例如:

QLineEdit [urgent = true] {

赤色;

}

使用这种方式有局限性。最主要的是当一个属性值变化时,所引用的样式不会自动更新。相反地,必须手动触发更新才会生效。

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

lineEdit-> setProperty( "urgent"、true);

lineEdit-> style()-> unpolish(lineEdit);

lineEdit-> style()-> Polishh(lineEdit);

必须在组件的样式中使用,QStyle::polish既接受QWidge也接受QApplication作为参数。

2.例
切り替えの例として、タイトルバーの最大化/復元ボタンをカスタマイズします。

ここに画像の説明を挿入

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());
    }
}

QSS:

QPushButton#maximizeButton[maximizeProperty="maximize"] {
    
    
        border-radius: none;
        border-bottom-left-radius: 4px;
        border-bottom-right-radius: 4px;
        background: rgb(50, 50, 50);
        p_w_picpath: url(:/Images/maximize);
}
QPushButton#maximizeButton[maximizeProperty="maximize"]:hover {
    
    
        background: rgb(60, 60, 60);
        p_w_picpath: url(:/Images/maximizeHover);
}
QPushButton#maximizeButton[maximizeProperty="maximize"]:pressed {
    
    
        background: rgb(55, 55, 55);
        p_w_picpath: 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);
        p_w_picpath: url(:/Images/restore);
}
QPushButton#maximizeButton[maximizeProperty="restore"]:hover {
    
    
        background: rgb(60, 60, 60);
        p_w_picpath: url(:/Images/restoreHover);
}
QPushButton#maximizeButton[maximizeProperty="restore"]:pressed {
    
    
        background: rgb(55, 55, 55);
        p_w_picpath: url(:/Images/restorePressed);

第三に、元のプロパティ
任意の認識可能なQ_PROPERTYは、qproperty-syntaxを使用して設定できます。

Q_PROPERTY定义的属性通过QSS按照qproperty-<property name>语法的方式设置。

QLabel的属性如下:

class Q_WIDGETS_EXPORT QLabel:public QFrame
{ Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap)Q_PROPERTY(bool scaledContents READ hasScaledContents WRITE setScaledContents)}; クラスQ_WIDGETS_EXPORTQWidget:public QObject、public QPaintDevice { Q_PROPERTY(QSize minimumSize READ minimumSize WRITE setMinimumSize)Q_PROPERTY(QSize maximumSize READ maximumSize WRITE setMaximumSize)};











QLabelの属性は、minimumSize、maximumSize、pixmap、およびscaledContentsです。

QSSファイル:

おすすめ

転載: blog.csdn.net/wowocpp/article/details/113974174