【问题标题】:Qt global style sheet loading?Qt 全局样式表加载?
【发布时间】:2012-07-25 18:51:57
【问题描述】:

如何使用 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);

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

【问题讨论】:

  • 我一直在与Qt Forums 的一些人交谈,相信我可能知道我需要做什么。明天回来报告解决方案。它基本上可以是 .qss 的文件位置、css 语法或只是选择正确的对象进行级联(即 QMainWindow::setStyleSheet(QString))。一旦我确定了这三个中的哪一个,上面的方法应该可以工作。

标签: c++ qt qtstylesheets


【解决方案1】:

你调用了QStyle * QApplication::setStyle ( const QString & style ),它从 QStyleFactory 请求一个用于 style 的 QStyle 对象。

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

【讨论】:

  • 你是对的。虽然这没有改变,但我已经改变了上面的代码以正确的语法反映这部分。我在关于假设答案的问题下方发表了评论。我明天应该会得到实际答案。
【解决方案2】:

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

可能的问题:

  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。上面的示例代码不再反映这一点,但如果我不更改,我所做的任何事情都不会奏效。

【讨论】:

    猜你喜欢
    • 2021-08-03
    • 2016-09-10
    • 1970-01-01
    • 2020-06-28
    • 2018-02-27
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多