【发布时间】:2018-07-28 03:31:49
【问题描述】:
当我尝试按 Enter 键插入新行时,一切看起来都很好,直到超出窗口的限制。请参见下面的示例:
我试过这个(Widget alignment in cell pyqt),这几乎是我的问题,但它没有解决它。
下一个代码执行错误:
from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication([])
table = QtWidgets.QTableWidget(0, 1)
def create_empty_row():
widget_completer = QtWidgets.QLineEdit()
widget_completer.returnPressed.connect(
create_empty_row)
_rows = table.rowCount()
table.setRowCount(_rows + 1)
table.setCellWidget(_rows, 0,
widget_completer)
create_empty_row()
table.show()
sys.exit(app.exec_())
我还尝试以编程方式填充 QTableWidget,一切看起来都很好,并且 QLineEdit 没有错位。但我必须根据需要插入新行。
如何在 QTableWidget 中对齐 QLineEdit?
谢谢!!
编辑
【问题讨论】:
-
我可以使用您的代码示例确认问题。对我来说,这种行为看起来像是 Qt 中的一个错误。整列,除了最近的一行,垂直移动。我认为这与您提到的问题无关。可能您需要向 Qt 项目提交错误报告。
-
正如@g4s0l1n 建议的那样,将 QTableWidget 的高度设置为 QLineEdit 高度的倍数就可以了。此外,进一步调查后,我从 QTableWidget 的父类 QTableView 中找到了方法 resizeRowToContents,它也可以解决问题。正如上面的评论所说,这将是一个错误,或者我认为,我编写代码的方式并不是执行我想要的最佳方式。我会尽快澄清这一点。
标签: python python-3.x qt pyqt5 qtablewidget