pyqt - 如何去掉状态栏中小部件的边框?

1 投票
2 回答
3260 浏览
提问于 2025-04-16 13:25

我正在使用QLabel小部件在状态栏中显示错误信息。用下面的代码,这个功能运行得很好;

self.statusbar = self.statusBar()

label = QtGui.QLabel("this is a test error message")
stylesheet = """
QLabel {
font-weight: bold;
color: #FF0000;
}
"""
label.setStyleSheet(stylesheet)
self.statusbar.addWidget(label)

唯一的问题是,这些小部件周围有一个边框,我不知道怎么去掉。虽然从功能上来说,这个边框不影响信息的显示,但看起来确实很难看,我想把它去掉。我搞不清楚这个边框是从哪里来的,是状态栏的问题还是小部件的问题。我尝试过修改状态栏和标签的样式表,添加“border: 0px”,但没有效果。我还尝试过把标签的框架设置为label.setFrameShape(QtGui.QFrame.NoFrame),但也没有用。

有没有人知道我该怎么去掉这个边框?

2 个回答

0

试试用 self.statusbar.showMessage('这是一个测试错误信息'),因为 QStatusBar 不是专门用来显示标签的。如果你需要更多的灵活性,可以考虑创建一个 QStatusBar 的子类,并修改它的 paintEvent 函数来专门处理标签。无论哪种方法,维护起来都比为每个想要放上去的标签设置样式表要简单得多,不过具体情况可能会有所不同。

想了解更多信息,可以查看 QStatusBar 的手册页面

2

你可以通过样式表来实现这个。你可能有一行代码像这样:
Application app(argc, argv);

在这行代码下面,添加一行像这样:
app.setStyleSheet("QStatusBar::item { border: 0px solid black }; ");

这样那些烦人的框框就会消失了。

撰写回答