【问题标题】:How to make sure all of the data on a Qt table cell is visible?如何确保 Qt 表格单元格上的所有数据都是可见的?
【发布时间】:2019-10-07 05:39:24
【问题描述】:

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

我正在使用 QTableWidget 创建一个表格。 该表在我的应用程序上的空间有限,并且不可编辑。 表中的某些单元格包含大量数据。其中一些对用户不可见。 我正在寻找一种解决方案来显示所有单元格的数据,而不会使表格变大。 我尝试为单元格设置不同的标志,但没有成功。

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

为了确保表格不可编辑,我使用了:

table.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)

我也试过用 -

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

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

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

【问题讨论】:

  • 我想您所指的问题是图像中的“aaaaaaaaaaaaaaaa ...”,您期望什么作为解决方案:水平或垂直滚动​​条或其他解决方案?你指向一个垂直滚动条,但我无法直观地想象你想要什么,但如果我想象一个水平滚动条
  • 感谢您的评论,我相应地更改了问题。答案是肯定的,我指的是桌子上带有“aaaaaa ...”的单元格。我正在寻找一种可以查看单元格全部内容的方法。我想为那个单元格设置一个垂直滚动条,但我不知道该怎么做。
  • 您希望“aaaaaaaaaaa ....”显示在 2 行或更多行中吗?
  • 如果您的意思是可以选择使单元格水平变大,以便可以显示所有数据,那么可以。我之前尝试将单元格放大,但无法将内容分散到 2 行。
  • 我认为你应该垂直,在我的解决方案中我让它水平增长,但你向我指出的是你不想改变宽度。

标签: python c++ qt pyqt4 qtablewidget


【解决方案1】:

一个可能的解决方案是在QHeaderView::ResizeToContents中设置水平标题的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_())

【讨论】:

    猜你喜欢
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2012-12-15
    • 1970-01-01
    相关资源
    最近更新 更多