我想从文本文件加载CSS并将其应用到QT设计器.ui
文件。在我看来这是不可能的,但我想确保。
我想做的是
auto MainPage = new QWidget(this);
MainPage->setStyleSheet(cssLoadedFromTextFile); // I want to load my own CSS before setting up the QT Designer widget, and have that CSS be applied to that widget
m_ui = new Ui::MainPage; // CSS class auto-generated from QT Designer .ui file
m_ui->setupUi(MainPage);
在从UI文件编译的C++文件中,setStyleSheet
再次被调用,覆盖了我写的css。请注意,是空字符串。即使Qt Designer中没有向.ui文件添加CSS,也会发生这种情况。
// inside m_ui->setupUi, in auto-generated class
MainPage->setStyleSheet(QString()) // a stylesheet is applied to MY C++ widget
如果我注解掉它,我会看到cssLoadedFromTextFile
,我的子小部件(在QT设计器中创建的.ui文件)看起来很好--应用了cssLoadedFromTextFile,但这在自动生成的文件中是不可行的。
有没有一种方法可以避免在自动生成的c文件中添加这个空样式表?或者有没有其他方法可以将外部样式表应用于QT设计器中定义的小部件,这样我就可以在这些小部件之间共享样式,以及手动编写的C创建的样式?
1条答案
按热度按时间qfe3c7zg1#
您可以执行以下操作之一:
QApplication
构造函数中一次性设置整个应用程序的样式表(见此处),正确的方法是将其作为参数传递给可执行命令。正如您可能已经猜到的,这样做适用于您创建的所有小部件,除非您覆盖它们的样式表。
setupUi
之后。我不知道为什么你说你想在调用
setupUi
之前这样做:来自样式表的属性被评估,首先从部件本身阅读它,然后从其父部件、祖父部件等等读取它,最后从应用程序读取它。通过调用以下命令不会覆盖
MainPage
的子小部件上的样式表集: