【问题标题】:PySide Custom widget doesn't auto fit in QTableWidgetPySide Custom 小部件不会自动适应 QTableWidget
【发布时间】:2016-08-14 10:10:35
【问题描述】:

我正在尝试创建一个自定义小部件RangeSpinBox。小部件不会自动适应QTableWidget,如下图所示。

import sys
from PySide import QtGui


class RangeSpinBox(QtGui.QWidget):
    def __init__(self, *args, **kwargs):
        super(RangeSpinBox, self).__init__(*args, **kwargs)

        self.__minimum = 0
        self.__maximum = 100

        main_layout = QtGui.QHBoxLayout()

        self.__minimum_spin_box = QtGui.QSpinBox()
        self.__range_label = QtGui.QLabel('-')
        self.__maximum_spin_box = QtGui.QSpinBox()

        main_layout.addWidget(self.__minimum_spin_box)
        main_layout.addWidget(self.__range_label)
        main_layout.addWidget(self.__maximum_spin_box)

        self.setLayout(main_layout)

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    spin_box = RangeSpinBox()
    table_widget = QtGui.QTableWidget()
    table_widget.setColumnCount(2)
    table_widget.setRowCount(1)
    table_widget.setCellWidget(0, 0, spin_box)
    table_widget.setCellWidget(0, 1, QtGui.QSpinBox())
    table_widget.show()
    app.exec_()

【问题讨论】:

    标签: python qt pyqt4 pyside pyqt5


    【解决方案1】:

    您需要删除布局上的默认边距,并更改旋转框上的 size-policy 以双向扩展:

            main_layout = QtGui.QHBoxLayout()
            main_layout.setContentsMargins(0, 0, 0, 0)
    
            size_policy = QtGui.QSizePolicy(
                QtGui.QSizePolicy.MinimumExpanding,
                QtGui.QSizePolicy.MinimumExpanding)
    
            self.__minimum_spin_box = QtGui.QSpinBox()
            self.__minimum_spin_box.setSizePolicy(size_policy)
            self.__range_label = QtGui.QLabel('-')
            self.__maximum_spin_box = QtGui.QSpinBox()
            self.__maximum_spin_box.setSizePolicy(size_policy)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      • 1970-01-01
      • 1970-01-01
      • 2017-10-31
      • 1970-01-01
      相关资源
      最近更新 更多