QStyle介绍:
Qt是一个跨平台的类库,相同的界面组件在不同的操作系统上显示效果是不一样的,QStyle封装了GUI界面组件外观的抽
象类,QT内置的界面组件都使用QStyle进行绘制,以保证他们与运行平台的界面效果一致。
运行结果图:
一.相关类和函数介绍:
QStyleFactory类管理着Qt的内置样式。
QStringList QStyleFactory::keys():返回平台支持的QStyle的名称列表
QStyle *QStyleFactory::create(const QString &key):根据名称字符串创建一个QStyle对象
QApplication类有两个函数用于操作样式。
QStyle* QApplication::style() :返回应用程序当前的样式
void QApplication::setStyle(QStyle* style):为应用程序设置一个样式
二.具体使用:
1)头文件
#include <QStyleFactory> //主要
#include <QRegExp>
2)构造函数中初始化combox框
myWidget::myWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::myWidget)
{
ui->setupUi(this);
QRegExp regExp(".(.*)\\+?Style");
//返回当前用的样式类名
QString defaultStyle = QApplication::style()->metaObject()->className();
if(regExp.exactMatch(defaultStyle))
{
defaultStyle = regExp.cap(1);
}
//设置combobox下拉列表
ui->comboBox->addItems( QStyleFactory::keys());
//设置combobox当前显示
ui->comboBox->setCurrentText(defaultStyle);
qStyle();
}
3)查看QStyle样式
//当前程序的QStyle样式
QString curStyle = QApplication::style()->metaObject()->className();
ui->textEdit->append("当前样式:"+curStyle);
ui->textEdit->append("");//空行
//平台支持的QStyle名称列表
QStringList list = QStyleFactory::keys();
ui->textEdit->append("平台支持的QStyle样式:");
foreach(const QString &str,list)
{
if(str.isEmpty())
break;
ui->textEdit->append(str);
}
4)设置QStyle样式
//通过按钮设置QStyle样式
void myWidget::on_btnSetStyle_clicked()
{
ui->textEdit->append("设置新QStyle样式:Fusion");
QStyle* style = QStyleFactory::create("Fusion");
qApp->setStyle(style);
}
//通过combox设置新样式
void myWidget::on_comboBox_currentIndexChanged(const QString &arg1)
{
qApp->setStyle(arg1);
}
具体代码:Qt中QStyle的使用代码