pyqt UI 文件 - 设置 class 属性

pyqt UI File - set class property

我有一个包含我的样式的 .qss 文件。 我像这样将它加载到我的应用程序中:

with open(_assets_folder + _css_file) as fh:
    main_view.setStyleSheet(fh.read())

我在 .ui 文件中有我的视图,我像这样加载到我的应用程序中:

uic.loadUi(self._views_folder + ui_file, self)

而且我可以像这样将我的 .qss 中的 classes 应用到我的 top_label1(并且有效):

self.top_label1.setProperty('class', 'top')

顶部 class 在我的 .qss 文件中:

.top {
    color: black;
    font-size: 82px;
    font-weight: bold;
    font-family: Arial;
    qproperty-alignment: 'AlignVCenter | AlignCenter';
}

我的标签在我的 .ui 文件中:

    <widget class="QLabel" name="top_label1">
     <property name="sizePolicy">
      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
       <horstretch>0</horstretch>
       <verstretch>0</verstretch>
      </sizepolicy>
     </property>
     <property name="minimumSize">
      <size>
       <width>330</width>
       <height>120</height>
      </size>
     </property>
     <property name="baseSize">
      <size>
       <width>330</width>
       <height>120</height>
      </size>
     </property>
    </widget>

是否可以直接在.ui文件中设置class? QT 设计有什么选择吗?

我尝试添加(手动)以下但没有成功:

     <property name="class">
      <string>top</string>
     </property>

您还可以从 Designer 的 属性 编辑器中添加“dynamic properties”:

添加一个名为“class”的字符串 属性 并相应地设置名称值。

请注意,虽然可以使用点-class 选择器(假设设置了名为“class”的字符串 属性),但您也可以使用自定义 属性 命名并使用方括号选择器;例如,在上述情况下,您还可以使用以下样式表:

QWidget[class="top"] {
    color: black;
    font-size: 82px;
    font-weight: bold;
    font-family: Arial;
    qproperty-alignment: 'AlignVCenter | AlignCenter';
}

请注意,属性 值在样式表中始终是字符串,因此它们 必须 括在引号中,布尔值 必须 小写。
例如,如果您添加名为“bigFont”的布尔动态 属性,样式表将如下所示:

QWidget[bigFont="true"] {
    font-size: 82px;
}