如何确保 Qt table 单元格上的所有数据都可见?

How to make sure all of the data on a Qt table cell is visible?

我目前正在使用 PyQt4 使用 python 2.7。但是,C++ 中的解决方案可能会有所帮助。

我正在使用 QTableWidget 创建一个 table。 table 在我的应用程序上限制了 space,它不是 editable。 table 中的某些单元格包含大量数据。其中一些对用户不可见。 我正在寻找一种解决方案来显示所有单元格的数据,而不会使 table 变大。 我尝试为单元格设置不同的标志,但我一无所获。

我考虑过为单元格设置一个滚动条。可能吗?

为了确保 table 不是 editable 我使用了:

table.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)

我也试过使用 -

table.item(row_index, col_index).setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)

在 table 中的每个单元格上,但它得到了相同的结果 - 没有编辑 + 只有一些数据可见。

图像: 我正在寻找一个选项来确保 (2,2) 处的所有数据,即 "aaaaaa..." 对用户可见。 也许在该单元格内设置垂直滚动条是解决方案?如果可以,怎么做?

一个可能的解决方案是在QHeaderView::ResizeToContents

中设置水平header的resizeMode
from PyQt4 import QtCore, QtGui

if __name__ == "__main__":
    import sys

    app = QtGui.QApplication(sys.argv)
    w = QtGui.QTableWidget(4, 2)
    w.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
    header = w.horizontalHeader()
    header.setResizeMode(QtGui.QHeaderView.ResizeToContents)

    for i in range(w.rowCount()):
        for j in range(w.columnCount()):
            it = QtGui.QTableWidgetItem("item ({}-{})".format(i, j))
            w.setItem(i, j, it)
    w.item(2, 1).setText("a" * 20)
    w.show()
    sys.exit(app.exec_())