Qt是一个跨平台的类库,相同的界面组件在不同的操作系统上显示效果是不一样的。
在windows7系统中,默认样式有:windows,fusion两个;通过安装Qt Creator编译器后,系统中会自动添加windowsvista样式,通常在Qt Creator编译器中设计界面时,组件的默认样式就是windowsvista样式,看起来比较美观。
当我们在自己电脑上开发完应用程序后,在其他电脑上使用时,会发现软件界面风格和在自己本机上运行时不太一致时,很有可能就是其他电脑上只有windows,fusion两个样式,默认使用windows样式,而没有windowsvista样式,导致的;一般通过安装Qt Creator编译器后即可解决。
在为应用程序设置样式时,一般会使用到如下函数:
(1)可以通过keys()函数,获取所在平台支持的QStyle的样式列表;该函数返回一个字符串列表;
QStringList QStyleFactory::keys()
(2)可以通过create函数,创建一个QStyle对象;
QStyle *QStyleFactory::create(const QString &key)
(3)可以通过setStyle函数为应用程序设置一个样式,设置样式后,界面元素都具有这个样式所定义的外观可以获得这个缺省样式的名称;
void QApplication::setStyle(QStyle *style)
示例一:
#include "mainwindow.h"
#include <QApplication>
#include <QStyleFactory>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 设置应用程序样式代码
QStyle *style=QStyleFactory::create("windowsvista"); // windows,fusion
a.setStyle(style);
MainWindow w;
w.show();
return a.exec();
}
示例二:
#include "mainwindow.h"
#include <QApplication>
#include <QStyleFactory>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QList<QString> styleSet= QStyleFactory::keys(); // windowsvista, windows, fusion
QStyle *style=QStyleFactory::create(styleSet[0]);
a.setStyle(style);
MainWindow w;
w.show();
return a.exec();
}
其中styleSet变量包含元素如下: