Qt全局样式表加载?

时间:2012-07-27 05:26:03

标签: c++ qt qtstylesheets

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

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

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:4)

上述尝试是正确的语法,但有理由它可能无法正常工作。

可能出现的问题:

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

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

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

  4. 我不得不问上面的问题的原因是我有三个问题中的两个。我首先必须指向文件正确的位置,然后我必须直接应用于QWidget。

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

    @Bill感谢您的帮助。他指出我发布了.setStyle而不是.setStyleSheet。上面的示例代码不再反映这一点,但如果我没有改变,那么我所做的一切都不会有效。