> С чем проще
Проще с QTableWidget, но он более примитивен.
> где можно искать, сортировать считанные данные
Везде.
#!/usr/bin/python # coding: utf-8 import sys import PySide.QtGui as QtGui import PySide.QtCore as QtCore data = [[123, 456, 789], [444, 555, 666]] class modelist(QtCore.QAbstractTableModel): def __init__(self, parent): QtCore.QAbstractTableModel.__init__(self, parent) def rowCount(self, parent=None): return len(data) def columnCount(self, parent=None): return 3 def data(self, idx, role=QtCore.Qt.DisplayRole): if role == QtCore.Qt.DisplayRole: return data[idx.row()][idx.column()] def headerData(self, section, orientation, role=QtCore.Qt.DisplayRole): if role == QtCore.Qt.DisplayRole and orientation == QtCore.Qt.Horizontal: return (u"Заголовок №1", u"Заголовок №2", u"Заголовок №3")[section] class X(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) model = modelist(self) sortModel = QtGui.QSortFilterProxyModel(self) sortModel.setSourceModel(model) self.view = QtGui.QTableView(self) self.view.setModel(sortModel) self.view.setSortingEnabled(True) self.view.setSelectionMode(QtGui.QAbstractItemView.SingleSelection) self.view.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows) self.view.setCornerButtonEnabled(False) self.setCentralWidget(self.view) if __name__ == "__main__": app = QtGui.QApplication(sys.argv) win = X() win.show() sys.exit(app.exec_())