qt里设置样式表失效问题

设置样式表时想先设置样式表为空,
setStyleSheet(" ");中间加了空格,后边又调用设置样式表setStyleSheet,结果样式表没有效果。把第一个设置样式表为空的空格去掉,改为setStyleSheet("");后边的样式表效果就正常了。我想知道为什么第一个设置setStyleSheet(" ");会导致后边的样式表设置失效?

“Devil组”引证GPT后的撰写:

  • 在 PyQt 中,setStyleSheet() 方法用于设置控件的样式表。当你调用 setStyleSheet(" ") 方法时,实际上是将一个空格字符串作为样式表应用到了该控件,而不是将样式表设置为空。空格字符串在样式表中被视为一条 CSS 规则,规则内容为空格字符,因此不会产生任何视觉效果。
  • 因此,在你的代码中调用 setStyleSheet(" ") 方法后,控件实际上是有样式表的,只不过样式表内容为空格字符。后续再调用 setStyleSheet() 方法时,如果你传入的样式表与空格字符相同,那么该样式表将被视为重复的,并不会产生任何新的视觉效果。如果你想清除之前应用的样式表,应该调用 setStyleSheet("") 方法,将样式表设置为空字符串。

小魔女参考了bing和GPT部分内容调写:
这个问题可能是因为空格的原因造成的,在设置样式表的时候,如果想要清空之前的样式表,需要使用setStyleSheet(""),而不是setStyleSheet (""),前者是没有空格的,而后者是有空格的,这样就会导致后边的样式表设置失效。所以,在设置样式表的时候,一定要注意空格的使用,以免出现这种情况。
回答不易,记得采纳呀。

  • 这篇博客: Qt样式表使用总结1,常用样式表设置方法中的 2,对窗口或控件调用setStyleSheet 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 比如对按钮调用:

    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        //可以看到在代码中设置样式,为了方便阅读,使用了繁琐的Tab和换行
        //因此除了特殊地方需要在代码追加修改样式,项目里一般建议在文本文件内写样式表
        ui->btn2->setStyleSheet("QPushButton{\
                                    background:#EE6AA7;\
                                    border:1px solid #8B7E66;\
                                    border-radius:5px;\
                                    color:white;\
                                }\
                                QPushButton:hover{\
                                    background:#FF6EB4;\
                                }\
                                QPushButton:pressed{\
                                    background:#CD6090; \
                                }");
    }

    也可直接对MainWindow setStyleSheet, 一次性填入各种不同控件的样式。

    因为样式表是可以继承到子窗口的