如何交互更改QListWidget大小

2024-05-19 14:43:03 发布

您现在位置:Python中文网/ 问答频道 /正文

关于这个例子有两个问题(Qt-Gui)。在

问题1:即使每个可能的边距都设置为零(使用.setSpacing().setContentsMargins()方法,QPushButton周围仍然有一个空格。什么小部件和属性负责按钮周围的额外空间?在

问题2:有没有办法让QListWidgets“可调整大小”?(因此,用户可以点击一个“分隔符”并以交互方式左右拖动,使一个ListWidget变宽,另一个变薄,而不改变对话框窗口的大小—保持窗口大小的一致性)。 enter image description here

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()

Tags: selfinitmyappqtguiqpushbuttonqvboxlayoutaddwidgetsetcontentsmargins
1条回答
网友
1楼 · 发布于 2024-05-19 14:43:03

对于第一个问题,您可以使用按钮样式表设置来获得目标布局

self.okButton.setStyleSheet('padding: 0px;')

对于第二个,你必须用QSplitter代替QHBoxLayout

^{pr2}$

结果如下图所示

enter image description here

相关问题 更多 >