def __init__(self,parent=None):
QMainWindow.__init__(self,parent)
self.setWindowTitle("test")
self.createActions()
self.mainWidget=QWidget(self)
self.mainLayout = QHBoxLayout(self.mainWidget)
self.createListView()
self.lv.setMinimumSize(200,200)
self.textEdit = QTextEdit()
self.textEdit.setMinimumSize(200,200)
self.mainLayout.addWidget(self.lv)
self.mainLayout.addWidget(self.textEdit)
所有这一切都是创建一个带有工具栏的窗口,并将两个小部件放在QHBoxLayout,QListView和QTextEdit中。然而出于某种原因,这三件事看起来都是重叠的。 (工具栏在窗口小部件下方可见)
答案 0 :(得分:3)
QMainWindow
已经有一个处理菜单栏和状态栏之类的布局。它还有一个中央小部件,用于添加自己的布局。因此,如果您添加代码行self.setCentralWidget(self.mainWidget)
,那么包含布局(mainLayout
)的现有小部件将被放置在QMainWindow
的布局构建中。
您当前的代码只是说您的小部件(mainWidget
)是主窗口的子代。它没有说明把它放在哪里,或者如何铺设它。所以Qt只是将它转储到指定父级的坐标(0,0)。
答案 1 :(得分:3)
您需要将这些小部件和布局放在QMainWindow
的中央小部件中。以下是QMainWindow
:
(来自PyQt文档的图片:http://pyqt.sourceforge.net/Docs/PyQt4/qmainwindow.html#centralWidget)
在您的情况下,解决方案是将QHBoxLayout
设置为中央窗口小部件的布局:
self.centralwidget.setLayout(self.mainLayout)
(无需创建另一个QWidget
来保存它,您可以只利用现有的中央窗口小部件。)