Qt支持css样式表,它是网页中用来控制显示的脚本,功能丰富,可以很方便的实现各种显示效果。如果想进一步了解其语法以及使用,可访问www.w3school.com.cn。好在之前在写网站,比较熟悉。
给一个控件添加样式表,只需调用其setStyleSheet即可,传入将样式内容作为字符串传入。一般为了方便是把样式表写成一个单独的文件,后缀名随意,一般是.qss。然后在程序启动的时候加载这个文档,读入内容,调用setStyleSheet即可。
这里写了一个简单的类
qqss.h
class QQss
{
public:explicit QQss();~QQss();public:bool LoadQss( const QString &skinfile ); // 载入样式表public:QString qssStr; // 保存样式表内容
};
qqss.cpp
QQss::QQss()
{
}QQss::~QQss()
{
}bool QQss::LoadQss( const QString &skinfile )
{QFile file( skinfile ); // 加入项目资源中的qss文件,不要/prefix直接放在/根目录下,否则会报无法解析的错误if( file.open( QIODevice::ReadOnly ) ){qssStr = QString( file.readAll() );file.close();return true;}else{qDebug("无法打开样式表");return false;}
}
需要注意的就是上面的一个注释,qss文件如果加入到工程中的话,要直接放在'/'前缀下面,和源文件同目录才行。
另外,qss如果加到工程中的话,就会被编译链接到最后的.exe的二进制文件中了(可以在QtCreator中的帮助中查找Qt的Resource管理),但是这样就不好实现换肤的功能了,所以最好从外部来读样式表,而不要加入到工程中。如果加入到工程中,那么路径就是':/'下的路径,注意有冒号。