QT Development (68) -Atributos dinámicos de la aplicación QSS

QT Development (68) -Atributos dinámicos de la aplicación QSS

Esta publicación de blog se reproduce desde el blog de Yiqu, Ersanli: http://blog.csdn.net/liang19890820

1. Configuración de resaltado de sintaxis
Qt Creator abre el archivo qss (* .qss) de forma predeterminada y no se resaltará. Debe configurarse manualmente para que esté más en línea con los hábitos de lectura y mostrar fragmentos de código de una manera más deslumbrante.

El proceso de configuración es el siguiente:

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

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

Nota: Separe con punto y coma (;)

Inserte la descripción de la imagen aquí
Los efectos son los siguientes:
Inserte la descripción de la imagen aquí
2. Atributos dinámicos
1. Atributos personalizados
Para cambiar dinámicamente la apariencia de la interfaz de usuario, el selector de atributos se puede utilizar en combinación con atributos dinámicos. Los atributos dinámicos se introdujeron en QT4.2, lo que permite la asignación de valores de atributo a los atributos de QObject que no existen en el momento de la compilación. Es decir: si establece un atributo urgente en verdadero para QObject, el atributo seguirá a la clase, pero no incluirá una macro Q_PROPERTY para el atributo urgente.

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

QLineEdit [urgente = verdadero] {

color rojo;

}

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

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

lineEdit-> setProperty ("urgente", verdadero);

lineEdit-> style () -> sin pulir (lineEdit);

lineEdit-> style () -> polish (lineEdit);

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

2. Ejemplo
Personalice el botón de maximizar / restaurar en la barra de título como un ejemplo para cambiar.

Inserte la descripción de la imagen aquí

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

En tercer lugar, la propiedad original
Cualquier Q_PROPERTY reconocible se puede establecer utilizando la sintaxis qproperty.

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

QLabel的属性如下:

clase Q_WIDGETS_EXPORT QLabel: QFrame público
{ Q_PROPERTY (QPixmap pixmap READ pixmap WRITE setPixmap) Q_PROPERTY (bool scaledContents READ hasScaledContents WRITE setScaledContents) }; clase Q_WIDGETS_EXPORT QWidget: QObject público, QPaintDevice público { Q_PROPERTY (QSize minimumSize READ minimumSize WRITE setMinimumSize) Q_PROPERTY (QSize maximumSize READ maximumSize WRITE setMaximumSize) };











Los atributos de QLabel son minimumSize, maximumSize, pixmap y scaledContents.

Archivo QSS:

Supongo que te gusta

Origin blog.csdn.net/wowocpp/article/details/113974174
Recomendado
Clasificación