【问题标题】:How to stick widgets to dialog edges如何将小部件粘贴到对话框边缘
【发布时间】:2018-02-09 05:32:24
【问题描述】:

调整大小时如何让lineedit 贴在对话框的顶部,button 贴在对话框的下边缘?

from PyQt5.QtWidgets import *

class Dialog(QDialog):
    def __init__(self, parent=None):
        super(Dialog, self).__init__(parent)
        self.setLayout(QVBoxLayout())

        layout = QHBoxLayout()
        self.layout().insertLayout(0, layout)
        lineedit = QLineEdit(self)
        layout.addWidget(lineedit)

        button = QPushButton(self)
        button.setText('ok')
        self.layout().addWidget(button)
        self.show()

app = QApplication(list())
dialog = Dialog()
app.exec_()

【问题讨论】:

    标签: python qt pyqt qdialog


    【解决方案1】:

    在布局中添加垂直间隔:

    from PyQt5.QtWidgets import *
    
    class Dialog(QDialog):
        def __init__(self, parent=None):
            super(Dialog, self).__init__(parent)
            self.setLayout(QVBoxLayout())
    
            layout = QHBoxLayout()
            self.layout().insertLayout(0, layout)
            lineedit = QLineEdit(self)
            layout.addWidget(lineedit)
    
            # version (1): add vertical, expanding spacer item
            self.layout().addItem(
                QSpacerItem(0, 0, QSizePolicy.Minimum, QSizePolicy.Expanding))
    
            # version (2): use "addStretch"
            # self.layout().addStretch()
    
            button = QPushButton(self)
            button.setText('ok')
            self.layout().addWidget(button)
            self.show()
    
    app = QApplication(list())
    dialog = Dialog()
    app.exec_()
    

    QSpacerItem 只是一个无样式的空白空间,根据其大小策略占用布局中的水平和垂直空间。

    QSpacerItem的参数:

    • w - 首选宽度,0
    • h - 首选高度,0
    • hPolicy - 水平尺寸政策,QSizePolicy.Minimum => 首选宽度足够,项目不会水平扩展
    • vPolicy - 垂直尺寸政策,QSizePolicy.Expanding => 项目可以利用额外空间,因此将垂直扩展并占用所有可用空间

    详情请参阅https://doc.qt.io/qt-5/qspaceritem.html#QSpacerItemhttp://doc.qt.io/qt-5/qsizepolicy.html#Policy-enum

    【讨论】:

    • 谢谢!如果您能解释一下QSizePolicy.MinimumQSizePolicy.Expanding 是什么,那就太好了。以及他们如何改变QSpacerItem 的外观。
    • 我添加了一些关于QSpacerItem的参数的解释,并添加了指向相关Qt5文档页面的链接。
    猜你喜欢
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    相关资源
    最近更新 更多