当前位置:   article > 正文

[QT编程系列-39]:用户界面UI - 样式表QSS与样式文件快速入门_qt qss界面布局

qt qss界面布局

目录

1. 概述

2. CSS

3. QSS示例

4. QT样式表文件使用方法与步骤

5. QT内置样式

6. QT常见基本样式


1. 概述

Qt提供了一种称为Qt样式表(Qt Style Sheets)的机制,可以用于自定义和美化Qt应用程序的用户界面(UI)

使用Qt样式表,你可以通过类似CSS的语法来定义UI元素的外观和布局,包括颜色、字体、边框、背景等。

以下是一些常用的Qt样式表属性和用法

  1. 选择器(Selectors):用于选择要应用样式的UI元素,可以使用对象名(object name)或类名(class name)作为选择器,也可以使用通配符和层级选择器。

    1. QPushButton {
    2. color: red; // 应用到所有QPushButton类型的按钮
    3. }
    4. QCheckBox#myCheckBox {
    5. font-size: 14px; // 应用到objectName为"myCheckBox"的QCheckBox
    6. }
    7. QLabel.warning {
    8. background-color: yellow; // 应用到class name为"warning"的QLabel
    9. }
  2. 属性设置:可以使用属性和值的形式来设置UI元素的外观。

    1. QPushButton {
    2. color: red;
    3. background-color: lightblue; // 设置文本颜色和背景色
    4. border: 1px solid gray; // 设置边框样式
    5. }
    6. QCheckBox:checked {
    7. color: green; // 设置选中状态的文本颜色
    8. }
  3. 盒模型属性:可以设置内边距(padding),外边距(margin),以及元素本身的尺寸和位置。

    1. QPushButton {
    2. padding: 5px;
    3. margin: 10px;
    4. width: 100px;
    5. height: 30px; // 设置内外边距、宽度和高度
    6. }
    7. QLabel {
    8. position: absolute; // 设置绝对定位
    9. top: 50px;
    10. left: 100px;
    11. }
  4. 伪状态(Pseudo-states):用于设置特定状态下的样式,如鼠标悬停(hovered)、按下(pressed)等。

    1. QPushButton:hover {
    2. background-color: lightgray; // 鼠标悬停时的背景颜色
    3. }
    4. QCheckBox:indeterminate {
    5. color: orange; // 设置不确定状态的文本颜色
    6. }
    7. QRadioButton:checked {
    8. image: url(checked.png); // 设置选中状态时的自定义图像
    9. }

除了上述基本用法,Qt样式表还支持更多高级功能,如渐变、阴影效果、动画和自定义部件样式等

你可以通过在Qt应用程序中设置样式表来改变UI的外观和布局,使其更符合自己的需求和设计。

有关更详细的用法和属性,请查阅Qt文档中关于Qt样式表的部分。

2. CSS

CSS(Cascading Style Sheets)样式表是一种用于描述HTML或XML文档的展示样式的语言。它为网页提供了丰富的样式控制和布局选项,使网页开发人员能够轻松地定义文档元素的外观和排版。

以下是一些常用的CSS样式表属性和用法:

  1. 选择器(Selectors):用于选择要应用样式的HTML元素,可以使用标签名、class、id等作为选择器,也可以使用组合选择器。

    1. h1 {
    2. color: red; /* 应用到所有<h1>标签 */
    3. }
    4. .my-class {
    5. font-size: 14px; /* 应用到class"my-class"的元素 */
    6. }
    7. #my-id {
    8. background-color: yellow; /* 应用到id为"my-id"的元素 */
    9. }
    10. p.my-class-fancy {
    11. color: blue; /* 应用到同时具有class "my-class-fancy"<p>标签的元素 */
    12. }
  2. 属性设置:可以使用属性和值的形式来设置元素的外观。

    1. h1 {
    2. color: red;
    3. background-color: lightblue; /* 设置文本颜色和背景颜色 */
    4. border: 1px solid gray; /* 设置边框样式 */
    5. }
    6. .my-class {
    7. font-weight: bold; /* 设置字体粗体 */
    8. }
    9. #my-id {
    10. text-decoration: underline; /* 设置文本下划线 */
    11. }
  3. 盒模型属性:可以设置内边距(padding)、外边距(margin),以及元素本身的尺寸和位置。

    1. h1 {
    2. padding: 10px;
    3. margin-top: 20px;
    4. width: 300px;
    5. height: 50px; /* 设置内边距、外边距、宽度和高度 */
    6. }
    7. .my-class {
    8. position: absolute; /* 设置绝对定位 */
    9. top: 50px;
    10. left: 100px;
    11. }
  4. 伪类(Pseudo-classes):用于设置特定状态下元素的样式,如鼠标悬停(:hover)、点击(:active)等。

    1. a:hover {
    2. color: green; /* 鼠标悬停时的文本颜色 */
    3. }
    4. input:focus {
    5. border: 2px solid blue; /* 获得焦点时的边框样式 */
    6. }
    7. li:nth-child(odd) {
    8. background-color: lightgray; /* 设置奇数位置的<li>元素的背景颜色 */
    9. }

CSS样式表还支持更多高级功能,如渐变、阴影效果、动画和媒体查询等。

使用CSS样式表,可以轻松地自定义网页的外观和布局,并使其具有吸引力和良好的用户体验。

对于更详细的属性和用法,请参考CSS的相关文档和教程。

3. QSS示例

以下是一些Qt样式表(QSS)的示例,展示了如何使用QSS来自定义Qt应用程序的UI外观:

  1. 设置全局样式:
  1. /* 设置所有按钮的背景色和文本颜色 */
  2. QPushButton {
  3. background-color: lightblue;
  4. color: white;
  5. }
  6. /* 设置所有标签的字体和字体大小 */
  7. QLabel {
  8. font-family: Arial, sans-serif;
  9. font-size: 14px;
  10. }
  11. /* 设置窗口的背景图片 */
  12. QWidget {
  13. background-image: url(background.jpg);
  14. background-repeat: no-repeat;
  15. background-position: center;
  16. }

  1. 设置特定对象的样式:
  1. /* 设置特定按钮的尺寸、背景颜色和边框样式 */
  2. QPushButton#myButton {
  3. width: 100px;
  4. height: 30px;
  5. background-color: lightgreen;
  6. border: 1px solid darkgreen;
  7. }
  8. /* 设置特定文本框的字体样式和内边距 */
  9. QLineEdit.myLineEdit {
  10. font-family: Verdana, sans-serif;
  11. padding: 5px;
  12. }
  13. /* 设置特定标签的文本颜色和背景颜色 */
  14. QLabel.warningLabel {
  15. color: red;
  16. background-color: lightyellow;
  17. }

  1. 使用伪状态和伪类:
  1. /* 设置鼠标悬停时按钮的背景颜色 */
  2. QPushButton:hover {
  3. background-color: lightgray;
  4. }
  5. /* 设置按下按钮时的背景颜色和文本样式 */
  6. QPushButton:pressed {
  7. background-color: darkgray;
  8. color: white;
  9. }
  10. /* 设置表格中奇数行的背景颜色 */
  11. QTableView QAbstractItemView::item:nth-child(odd) {
  12. background-color: lightgray;
  13. }
  14. /* 设置选中行的背景颜色和文本颜色 */
  15. QTableView QAbstractItemView::item:selected {
  16. background-color: navy;
  17. color: white;
  18. }

这些示例只是QSS的一部分用法,其中展示了一些常见的样式设置。你可以根据自己的需求定制和设计Qt应用程序的样式表,以创建独特的UI外观。在应用QSS样式表时,通常需要使用setStyleSheet()函数将样式表应用于Qt对象或整个应用程序。详细的QSS语法和属性,请参考Qt的官方文档和样式表部分。

4. QT样式表文件使用方法与步骤

fangfgnaf在Qt中,你可以将样式表内容保存到一个独立的样式表文件中,然后在应用程序中引用该样式表文件来设置UI的外观。以下是使用样式表文件的步骤:

  1. 创建一个独立的样式表文件,通常使用.qss作为文件扩展名,比如styles.qss

  2. 在样式表文件中编写所需的样式规则,就像在QSS中编写样式一样。

    1. /* styles.qss */
    2. QPushButton {
    3. background-color: lightblue;
    4. color: white;
    5. }
    6. QLabel {
    7. font-family: Arial, sans-serif;
    8. font-size: 14px;
    9. }
    10. QWidget {
    11. background-image: url(background.jpg);
    12. background-repeat: no-repeat;
    13. background-position: center;
    14. }
  3. 应用程序中加载样式表文件,并应用于相应的Qt对象或整个应用程序。

    1. // main.cpp
    2. #include <QApplication>
    3. #include <QFile>
    4. int main(int argc, char *argv[])
    5. {
    6. QApplication app(argc, argv);
    7. // 创建一个样式表文件对象
    8. QFile styleFile(":/styles.qss"); // 根据实际的文件路径或资源路径进行修改
    9. if (styleFile.open(QFile::ReadOnly))
    10. {
    11. // 读取样式表文件内容
    12. QString styleSheet = QLatin1String(styleFile.readAll());
    13. // 设置样式表
    14. app.setStyleSheet(styleSheet);
    15. }
    16. // ... 创建和显示Qt对象
    17. return app.exec();
    18. }

    在上述示例中,styles.qss文件被读取并加载到styleSheet变量中,然后通过setStyleSheet()方法设置为应用程序的样式表:/styles.qss是资源路径,可以根据你的实际情况进行修改。

提示:如果要将样式表文件作为资源文件进行管理,可以在Qt项目中的.qrc文件中添加样式表文件并使用资源路径来引用。

通过使用样式表文件,你可以更好地组织和管理UI的样式规则,方便维护和重用。同时,你可以在不重新编译应用程序的情况下修改样式表文件,使得UI的外观可以灵活地调整和定制。

5. QT内置样式

Qt框架默认提供了几种内置的样式,你可以直接在应用程序中使用它们。

以下是几个常用的Qt现有样式:

  1. Fusion样式(默认样式):这是Qt框架默认的样式,它在不同的操作系统上提供了一致的外观。

  2. Windows样式:这是Windows操作系统的原生外观样式,可以在Qt应用程序中使用。

  3. macOS样式:这是macOS操作系统的原生外观样式,同样可以在Qt应用程序中使用。

  4. WindowsVista样式:仿效Windows Vista风格的外观样式。

  5. WindowsXP样式:仿效Windows XP风格的外观样式。

使用这些样式非常简单,只需在应用程序中设置所需的样式即可。以下是使用内置样式的示例代码:

  1. #include <QApplication>
  2. #include <QStyleFactory>
  3. int main(int argc, char *argv[])
  4. {
  5. QApplication app(argc, argv);
  6. // 设置Fusion样式
  7. app.setStyle(QStyleFactory::create("Fusion"));
  8. // 设置Windows样式
  9. // app.setStyle(QStyleFactory::create("Windows"));
  10. // 设置macOS样式
  11. // app.setStyle(QStyleFactory::create("Macintosh"));
  12. // 设置WindowsVista样式
  13. // app.setStyle(QStyleFactory::create("WindowsVista"));
  14. // 设置WindowsXP样式
  15. // app.setStyle(QStyleFactory::create("WindowsXP"));
  16. // ... 创建和显示Qt对象
  17. return app.exec();
  18. }

通过调用app.setStyle()方法并使用QStyleFactory::create()函数提供的内置样式之一,可以设置所需的样式。在上述示例中,使用了Fusion样式,你可以注释掉其他样式并选择你希望使用的样式。

除了这些内置样式,Qt还支持通过自定义QStyle子类来创建和使用自定义样式。这样可以实现完全定制的UI外观和行为。

6. QT常见基本样式

在Qt中,你可以使用样式表(Style Sheets)来定制和美化用户界面。以下是一些常见的样式,你可以通过样式表来实现它们:

  1. 背景颜色和背景图片:

    1. QWidget {
    2. background-color: lightblue;
    3. background-image: url(image.png);
    4. background-repeat: no-repeat;
    5. background-position: center;
    6. }
  2. 按钮样式:

    1. QPushButton {
    2. background-color: lightblue;
    3. color: white;
    4. border-radius: 5px;
    5. padding: 5px 10px;
    6. }
  3. 标签样式:

    1. QLabel {
    2. font-family: Arial, sans-serif;
    3. font-size: 14px;
    4. color: #333333;
    5. }
  4. 文本框样式:

    1. QLineEdit {
    2. padding: 5px;
    3. border: 1px solid #999999;
    4. border-radius: 3px;
    5. }
  5. 表格样式:

    1. QTableView {
    2. background-color: white;
    3. alternate-background-color: #f2f2f2;
    4. gridline-color: #cccccc;
    5. }
  6. 进度条样式:

    1. QProgressBar {
    2. background-color: #f0f0f0;
    3. border: 1px solid #999999;
    4. border-radius: 5px;
    5. }

以上只是一些常见的样式示例,你可以使用更多的CSS属性来实现更复杂的效果。在Qt的样式表中,你可以设置背景颜色、字体样式、边框样式、尺寸和间距等。同时,Qt还提供了更高级的样式定制能力,比如自定义绘制、状态切换和动画效果等。

要应用这些样式,你可以将样式表内容应用于相应的Qt对象,通过调用setStyleSheet()方法或使用Qt Designer界面编辑器。

希望这些常见的样式示例能够帮助你美化你的Qt用户界面。你可以根据实际需求和创意来定制更多独特的样式。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/560857
推荐阅读
相关标签
  

闽ICP备14008679号