Как убедиться, что все данные в ячейке таблицы Qt видны? - PullRequest
3 голосов
/ 20 мая 2019

В настоящее время я работаю с Python 2.7, используя PyQt4.Однако может помочь решение на C ++.

Я использую QTableWidget для создания таблицы.Таблица имеет ограниченное пространство в моем приложении, и она не редактируется.Некоторые из ячеек в таблице содержат много данных.Некоторые из них не видны пользователю.Я ищу решение, чтобы показать все данные ячеек, не увеличивая таблицу.Я пытался установить разные флаги для ячеек, но это ни к чему не привело.

Я думал об установке полосы прокрутки для ячеек.Возможно ли это?

Чтобы убедиться, что таблица не редактируется, я использовал:

table.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)

Я также пытался использовать -

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

в каждой ячейкев таблице, но он дал мне те же результаты - без редактирования + видны только некоторые данные.

ИЗОБРАЖЕНИЕ: я ищу вариант, чтобы убедиться, что все данные в (2,2),то, что говорит "aaaaaa ...", будет видно пользователю.Может быть, установка вертикальной полосы прокрутки внутри этой ячейки - решение?Если да, то как это сделать?

1 Ответ

0 голосов
/ 20 мая 2019

Возможное решение - установить resizeMode горизонтального заголовка в QHeaderView :: ResizeToContents

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_())

enter image description here

...