[英]How to change QListWidget size interactively
There are two questions regarding this example (Qt Gui). 关于此示例(Qt Gui)有两个问题。
Question 1: Even while every possible margin has been set to zero (using .setSpacing()
and .setContentsMargins()
methods there is still a space around the QPushButton. What widget and attribute is responsible for the extra space around button? 问题1:即使将每个可能的边距都设置为零(使用.setSpacing()
和.setContentsMargins()
方法,QPushButton周围仍然有一个空格。哪个小部件和属性负责按钮周围的额外空间?
Question 2: Is there a way to make QListWidgets "re-sizable"? 问题2:有没有办法使QListWidgets“可调整大小”? (so the user could clic a "divider" and drag it left-right interactively making one ListWidget wider and another thinner without changing a size of dialog window - keeping the window size consistent). (因此,用户可以选择“分隔符”并以交互方式左右拖动它,以使一个ListWidget变宽而另一个变薄,而无需更改对话框窗口的大小-保持窗口大小一致)。
from PyQt4 import QtGui, QtCore
class MyApp(object):
def __init__(self):
super(MyApp, self).__init__()
self.mainWidget = QtGui.QWidget()
self.mainWidget.setContentsMargins(0,0,0,0)
self.mainLayout = QtGui.QVBoxLayout()
self.mainLayout.setSpacing(0)
self.mainLayout.setContentsMargins(0,0,0,0)
self.mainWidget.setLayout(self.mainLayout)
self.hLayout = QtGui.QHBoxLayout()
self.mainLayout.insertLayout(0, self.hLayout)
self.listA=QtGui.QListWidget()
self.listB=QtGui.QListWidget()
self.hLayout.addWidget(self.listA)
self.hLayout.addWidget(self.listB)
self.buttonGroupbox = QtGui.QGroupBox()
self.buttonlayout = QtGui.QVBoxLayout()
self.buttonGroupbox.setLayout(self.buttonlayout)
self.buttonGroupbox.setContentsMargins(0,0,0,0)
self.buttonlayout.setSpacing(0)
self.buttonlayout.setContentsMargins(0,0,0,0)
self.okButton = QtGui.QPushButton('OK')
self.buttonlayout.addWidget(self.okButton)
self.okButton.setContentsMargins(0,0,0,0)
self.mainLayout.addWidget(self.buttonGroupbox)
self.mainWidget.show()
sys.exit(app.exec_())
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
MyApp()
For the first question maybe you could obtain your target layout with a button stylesheet setting 对于第一个问题,也许可以通过按钮样式表设置获取目标布局
self.okButton.setStyleSheet('padding: 0px;')
For second one you have to substitute QHBoxLayout with QSplitter 对于第二个,您必须用QSplitter替换QHBoxLayout
self.splitter = QtGui.QSplitter()
self.listA = QtGui.QListWidget()
self.listB = QtGui.QListWidget()
self.splitter.addWidget(self.listA)
self.splitter.addWidget(self.listB)
self.mainLayout.addWidget(self.splitter)
Results are showed in the following picture 结果如下图所示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.