Qt全局样式表加载?

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小部件的qss文件:
```

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);

也许这是正确的,而我做错了其他事情?

我一直在与Qt论坛的一些人交流,相信我可能知道我需要做什么。明天回来报告解决方案。它基本上可以是.qss文件的位置、css语法或者只是选择正确的对象进行级联(例如QMainWindow::setStyleSheet(QString))。一旦我弄清楚其中的哪一个,上述方法应该就能够奏效。 - Brandon Clark
2个回答

7

你说得对。虽然这不会造成任何改变,但我已经修改了上面的代码以反映正确的语法。关于假定答案,我在我的问题下面发表了评论。明天我应该有实际答案。 - Brandon Clark

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。尽管上面的示例代码已经更正,但如果我没有进行更改,那么无论我做什么都不会起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接