8

如何使用 Qt 全局加载样式表(.qss 样式资源)?

我试图让事情比以下更有效率:

middleIntText -> setStyleSheet("QLineEdit {  border: 1px solid gray;
                                border-radius: 5px;padding: 0 8px;
                                selection-background-color:darkgray;
                                height:40px;font-size:15px;}");

我认为以下内容可以一次性为所有 QLineEdit 小部件加载 QLineEdit:

qss 文件:

QLineEdit {     border: 1px solid gray;
                border-radius: 5px;
                padding: 0 8px;
                selection-background-color:darkgray;
                height:40px;
                font-size:15px;}

cpp文件:

QApplication a(argc, argv);
QFile stylesheet("formStyle.qss");
stylesheet.open(QFile::ReadOnly);
QString setSheet = QLatin1String(stylesheet.readAll());
a.setStyleSheet(setSheet);

也许这是对的,而我做错了什么?

4

2 回答 2

7

您调用了QStyle * QApplication::setStyle ( const QString & style ) ,它从 QStyleFactory请求 QStyle 对象的样式。

相反,您应该调用设置应用程序样式表的void QApplication::setStyleSheet ( const QString & sheet ) 。

于 2012-07-27T07:27:20.570 回答
4

上述尝试是正确的语法,但有一些原因可能无法正常工作。

可能出现的问题:

  1. 未检索源文件 (.qss)

  2. 选择了不正确的顶部小部件来应用级联。

  3. .qss (CSS) 代码的语法。

我不得不问我上面的问题的原因是我有这三个问题中的两个。我首先必须指出文件的正确位置,其次我必须直接向 QWidget 申请。

QFile stylesheet("G:/Applications/Projects/ProspectTracker/formStyle.qss");
stylesheet.open(QFile::ReadOnly);
QString setSheet = QLatin1String(stylesheet.readAll());
QWidget::setStyleSheet(setSheet);

@Bill 感谢您的帮助。他指出我发过贴.setStyle而不发.setStyleSheet。上面的示例代码不再反映这一点,但如果我不改变我所做的任何事情都不会奏效。

于 2012-07-27T14:29:31.627 回答