2012-07-27 147 views
8

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

我试图让事情效率比:

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

我一直在[Qt Forums](http://qt-project.org/forums/viewthread/19124/)上与一些人交谈,并相信我可能知道我需要做什么。通过解决方案明天报告。它基本上可以是.qss,css语法的文件位置,或者只是选择合适的对象来级联(即QMainWindow :: setStyleSheet(QString))。一旦我计算出三者中的哪一个,上面的方法应该可以工作。 – 2012-07-27 07:29:38

回答

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。上面的示例代码不再反映这一点,但如果我没有改变,我没有做过任何工作。