1 回答

TA贡献2016条经验 获得超9个赞
解释:
问题是您使用了同一个 QSpacerItem 2 次,当 QDialog 关闭时,因为它是一个局部变量,它将被删除,Qt 也会消除内部对象,在这种情况下,QSpacerItem 将被双重消除导致“分段错误”。
解决方案:
您必须创建 2 个 QSpacerItem:
# ...
hbox = QHBoxLayout()
hbox.addItem(spacer)
self.option_exp = QLabel('OR')
hbox.addWidget(self.option_exp)
hbox.addItem(QSpacerItem(10,10,QSizePolicy.Expanding,QSizePolicy.Expanding))
vbox.addLayout(hbox)
# ...
另一种选择是不使用 QSpacerItem 而是设置一个拉伸因子:
# ...
hbox = QHBoxLayout()
hbox.addStretch()
self.option_exp = QLabel('OR')
hbox.addWidget(self.option_exp)
hbox.addStretch()
vbox.addLayout(hbox)
# ...
或者不使用 QHBoxLayout 并通过设置对齐方式将 QLabel 直接设置为 QVBoxLayout:
# ...
self.table_list = QListWidget()
self.table_list.setSelectionMode(QAbstractItemView.SingleSelection)
vbox.addWidget(self.table_list)
self.option_exp = QLabel('OR')
vbox.addWidget(self.option_exp, alignment=Qt.AlignHCenter)
self.new_name = QLineEdit(placeholderText='Enter New Source Name')
vbox.addWidget(self.new_name)
# ...
添加回答
举报