QSS学习需要理解的东西

本文介绍了Qt中QSS的学习要点,包括Qt控件的盒子模型、QSS语法基础和使用Qt帮助文档的方法。重点讨论了QSS的subcontrol-origin属性,以及在使用QSS过程中遇到的常见问题,如设置QComboBox样式、背景颜色无效、字体加载和中文字体乱码等问题,并提供了详细的解决方案。
摘要由CSDN通过智能技术生成

1、Qt控件的盒子模型

2、QSS语法基础

3、如何使用Qt帮助文档

Qt中如何设置QComboBox的下拉列表的样式_敲定生活-CSDN博客_qcombobox下拉框样式

4、QSS学习-subcontrol-origin

QSS学习-subcontrol-origin_柒树-CSDN博客_subcontrol-origin

5、阿里巴巴普惠体下载、安装。安装之后,直接就在Qt设计器中就可以看到

阿里巴巴普惠体免费下载-阿里巴巴普惠体字体最新绿色下载 - 系统家园

1、安装字体,安装过程中就能看到字体的名称

2、字体载到程序中

在项目中加载第三方字体

//加载QSS
void stylesheetQssFile(QApplication&a)
{
    QFile qss(":/qss/SpermMorph.qss");  //从资源中加载
    if (qss.open(QFile::ReadOnly))
    {

        qDebug("open success");

        QString style = qss.readAll(); 

        a.setStyleSheet(style);  

        qss.close();
    }
}

//加载第三方字体:我的字体放在fonts文件夹
void applicationLoadFonts()
{
	QDir fontDir(QCoreApplication::applicationDirPath() + QString("/fonts/"));
	QFileInfoList subFileList = fontDir.entryInfoList(QDir::Files | QDir::CaseSensitive);
	for (int i = 0; i < subFileList.size(); i++)
	{
		QString suffix = subFileList[i].suffix();
		if (suffix.compare("otf") == 0 || suffix.compare("ttf") == 0)
		{
			QString filePath = fontDir.absolutePath() + "/" + subFileList[i].fileName();
			QFontDatabase::addApplicationFont(filePath);
		}
	}
}

3、使用阿里字体遇到的问题:

在Qt的设计器中,出现的字体,选择不同的Alibaba PuHuiTi只有一种效果。不知道是怎么回事

使用过程中遇到的坑:

1、设置控件的QSS无效解决思路

1.1、检测控件是否设置了setObjectName,我就是没有设置控件的这个属性,找了好久

1.2、将样式字符串在设计器中看看是否有效果,避免拼写错误。

1.3、查看帮助助手参考第三点,有可能某些样式的生效依赖其他样式的设置。如background-color生效,得设置border。下面会讲到。

1、有时候设置窗口QWidget背景图无效问题

问题描叙:

在设置登录界面的背景的时候,设置背景background-image无效

解决方案:

在窗口下面再嵌套一个窗口,再在嵌入的窗口中设置样式,如下图右边所示。可能是border的缘故也可能是qt的bug暂时不太明白为什么

2、设置窗口背景色,子控件被影响

问题描叙:在窗口上有很多控件,窗口有自己的背景颜色。

当直接接在窗口上使用QSS设置背景色等样式,会影响子控件的背景色。

原因:指定窗口的objectName,这样设置的背景样式就不会影响子控件的背景

解决方案:如第一行,设置窗口的样式的时候,使用筛选器

QWidget#widget
{

background: #F2F3F7;
border-radius: 8px;
border-radius: 8px;


}

QPushButton#ConnectBtn,
QPushButton#DisconnectBtn,
QPushButton#SaveBtn
{
border: 3px solid #63A9F9;
box-shadow: inset 0 -2px 3px 2px #1760BF;
border-radius: 8px;
font-family: 阿里巴巴普惠体 B;
font-size: 18px;
color: #FFFFFF;

border-image: url(:/image_system_setting/Resources/images_new/system_setting/save button_normal.png);
}

QPushButton#ConnectBtn::pressed,
QPushButton#DisconnectBtn::pressed,
QPushButton#SaveBtn::pressed
{


	border-image: url(:/image_system_setting/Resources/images_new/system_setting/save button_selected.png);
}





QLabel,
QCheckBox,
QLineEdit
{
font-family: 阿里巴巴普惠体 M;
font-size: 16px;
color: #16214D;


}



QLineEdit
{

border: 1px solid rgba(22,33,77,0.50);
border-radius: 8px;
border-radius: 8px;
}


QComboBox
{
font-family: 阿里巴巴普惠体 M;
font-size: 16px;
color: #16214D;
border: 1px solid rgba(22,33,77,0.50);
border-radius: 8px;
border-radius: 8px;
}


4、设置控件的background-color无效问题

问题描叙:设置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值