QT样式表使用

https://blog.csdn.net/qq_32348883/article/details/122686832

1.前言

QT使用样式表通常有三种方式:
1. 在UI设计器---Qt Designer 内添加并设置样式;
优点:直观显示。
缺点:样式比较多时,不利于检查样式是否编写错误。同时不可以二次修改,即界面显示完毕后无法通过此方法修改界面的样式,只能靠代码去修改。
  1. 在代码内直接使用样式;
    优点:此种方法很方便,也很快捷。可以随时设置样式,改变样式,根据不同条件设置不同的样式,而不像第一、第三种方法直接设置固定样式。
    缺点:当样式内容较复杂时,不利于查看,同时可能为了编码风格美观需要将样式内容换行等,这样可能会导致样式错误,根本没有效果,导致需要多次调试,浪费不必要的时间。

  2. 将样式添加在文件内,以读取文件的方式来设置样式;
    优点:
    这种方法在界面样式较复杂时,我们在文件中编写样式,内容比较清晰,样式编写格式错误更加明显。同时也便于修改,同时一些文件编辑器能够自动给出样式输入提示,提供高编码效率。
    缺点:
    一般样式表文件都会加载到程序资源文件中,所以这里需要单独加载一个文件。同时跟第一种方法一样,不可以二次修改,当界面显示完毕后,只能靠调用setStyleSheet方法再次修改。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2.QPushButton和QToolButton 鼠标普通态、停留态、按下态

以QPushButton为例:

/*按钮普通态*/
QPushButton
{
    /*字体为微软雅黑*/
    font-family:Microsoft Yahei;
    /*字体大小为20点*/
    font-size:20pt;
    /*字体颜色为白色*/    
    color:white;
    /*背景颜色*/  
    background-color:rgb(14 , 150 , 254);
    /*边框圆角半径为8像素*/ 
    border-radius:8px;
}

/按钮停留态/
QPushButton:hover
{
/背景颜色/
background-color:rgb(44 , 137 , 255);
}

/按钮按下态/
QPushButton:pressed
{
/背景颜色/
background-color:rgb(14 , 135 , 228);
/左内边距为3像素,让按下时字向右移动3像素/
padding-left:3px;
/上内边距为3像素,让按下时字向下移动3像素/
padding-top:3px;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

3.QLabel设置前景色、背景色、字体大小、字体类型

QLabel {
    font-family: "Microsoft YaHei";
    font-size: 14px;
    color: #BDC8E2;
    background-color: #2E3648; 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4.QLineEdit边框、背景颜色设置

QLineEdit
{
	border: 1px solid gray; /* 边框 */
	border-radius: 4px;     /* 边框圆角 */
	padding: 0 8px;         /* 内容与边框距离 */
	background: white;      /* 背景颜色 */
	selection-background-color: darkgray; /*所选内容的背景颜色*/
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5. 窗体背景图片设置

例如: 设置主窗体背景图片为 new_back.png

QWidget#MainWindow
{
    image: url(:/new/prefix/resource/new_back.png);
}
  • 1
  • 2
  • 3
  • 4

附注

  1. 在不改变原有的样式下,添加附加新样式的方式:
void setNewStyleSheet(QString styleSheet)
{
    //获取到原来的样式
     QString oldStyleSheet = this->styleSheet();
     styleSheet += oldStyleSheet;
     this->setStyleSheet(styleSheet);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. QPushbutton或者QToolButton 的背景图片自动缩放,自适应按键大小
QPushButton *button = new QPushButton(this);
button->setGeometry(50, 50, 100, 50);
button->setStyleSheet("border-image:url(:/timg.jpg)");
connect(button, &QPushButton::pressed, [=](){
    button->setStyleSheet("border-image:url(:/myico.ico)");}
);
connect(button, &QPushButton::released, [=](){
    button->setStyleSheet("border-image:url(:/timg.jpg)"); }
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  1. QT工程加载一个样式表
QFile file(":/qss/stylesheet/mysheet.qss");
file.open(QFile::ReadOnly);
QString styleSh = tr(file.readAll());
setStyleSheet(styleSh);
file.close();
  • 1
  • 2
  • 3
  • 4
  • 5
文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux32525 人正在系统学习中
posted @ 2023-06-26 17:42  mkmkbj  阅读(140)  评论(0编辑  收藏  举报