【问题标题】:Aligning a QLineEdit inside QtTableWidget在 QtableWidget 中对齐 QLineEdit
【发布时间】:2018-07-28 03:31:49
【问题描述】:

当我尝试按 Enter 键插入新行时,一切看起来都很好,直到超出窗口的限制。请参见下面的示例:

Disalignment example

我试过这个(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?

谢谢!!

编辑

使用resizeRowToContents解决

【问题讨论】:

  • 我可以使用您的代码示例确认问题。对我来说,这种行为看起来像是 Qt 中的一个错误。整列,除了最近的一行,垂直移动。我认为这与您提到的问题无关。可能您需要向 Qt 项目提交错误报告。
  • 正如@g4s0l1n 建议的那样,将 QTableWidget 的高度设置为 QLineEdit 高度的倍数就可以了。此外,进一步调查后,我从 QTableWidget 的父类 QTableView 中找到了方法 resizeRowToContents,它也可以解决问题。正如上面的评论所说,这将是一个错误,或者我认为,我编写代码的方式并不是执行我想要的最佳方式。我会尽快澄清这一点。
  • 很棒的发现,让我想起了doc.qt.io/qt-5/qlistview.html#uniformItemSizes-prop

标签: python python-3.x qt pyqt5 qtablewidget


【解决方案1】:

您没有为不同的小部件设置正确的几何形状。所以,问题是 QTableWidget 的高度应该是 ScreenHeight - QLineEdit.height。通过此更改,QLineEdit 几何图形与 QTableWidget 不匹配,应该对齐。

希望对你有所帮助

问候

【讨论】:

  • 我不接受这个答案,因为我想在将问题标记为已解决之前进行更多调查,但这个答案非常有帮助。
  • 最后,我使用resizeRowToContents解决了我的问题,但感谢您的建议!
猜你喜欢
  • 2017-05-10
  • 1970-01-01
  • 2019-08-01
  • 2013-04-20
  • 2019-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多