我需要在QVBoxLayout中的表下添加状态栏。问题是我不知道为什么状态栏不显示。在QBoxLayout中,我添加了一个tableView,在表下我需要有状态栏。下面是我代码的一部分:
self.setGeometry(200,200,600,600)
if self._model.productName()!='':
self.setWindowTitle('TITLE')
QVBoxLayout(self).addWidget(self.tv)
# add staus bar
statusBar = QStatusBar()
statusLabel = QLabel("Here comes the status bar message!!")
statusBar.addWidget(statusLabel)
QVBoxLayout(self).addWidget(statusBar)发布于 2014-02-10 10:06:43
显示状态栏的理想方法是首先从QtGui.QMainWindow类继承,然后使用statusBar方法创建状态栏。
因此,在创建GUI的主类中,您可以这样做:
class Window(QtGui.QMainWindow):
def __init__(self, parent):
super(Window, self).__init__()
self.statusbar = self.statusBar()然后,您可以以下列方式在状态栏中显示消息:
self.statusbar.showMessage('This message will be shown in the status bar')不需要使用QLabel来显示状态栏消息。
或者,您可以从QtGui.QWidget类继承并执行以下操作:
self.statusbar = QStatusBar()
self.statusbar.showMessage('Some status bar message')此外,正如one of the other answers所指出的,布局的创建方式是错误的。
self.layout = QVBoxLayout(self)
self.layout.addWidget(self.tv)这应该是正确的方法。
发布于 2014-02-10 10:07:05
不需要在QLabel中添加QStatusBar,只需执行以下操作:
self.statusBar = QStatusBar()
self.statusBar.showMessage("Some message")
...发布于 2014-02-10 10:17:30
那么,您在管理布局方面是错误的,为了实现布局,它需要在您使用它的小部件存在的时间内使用。因此,基本上,您必须使用new创建布局,并将其放置在某个小部件中。
您当前所做的工作是创建布局,并使用作为临时变量的self与QVBoxLayout(self)一起使用,然后再创建另一个再次是临时的布局。
创建布局的正确方法是:
QVBoxLayout *layout = new QVBoxLayout (self);
layout->addWidget (...);
layout->addWidget (...);编辑:这个答案是为C++编写的,尽管它仍然指向作者代码中的有效错误,所以我不会删除它,因为它可能对某些人仍然有用。
https://stackoverflow.com/questions/21673912
复制相似问题