如何使用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);
也许这是对的,我做错了什么?
答案 0 :(得分:6)
您调用QStyle * QApplication::setStyle ( const QString & style )从QStyleFactory请求 style 的QStyle对象。
相反,您应该调用设置应用程序样式表的void QApplication::setStyleSheet ( const QString & sheet )。
答案 1 :(得分:4)
上述尝试是正确的语法,但有理由它可能无法正常工作。
可能出现的问题:
未检索到源文件(.qss)
选择不正确的顶级窗口小部件来应用级联。
.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
。上面的示例代码不再反映这一点,但如果我没有改变,那么我所做的一切都不会有效。