У меня проблема с QTableView и помещением данных в него. Текст (строки) отображаются в порядке и можно сортировать и фильтровать через прокси-сервер и QStandardItemModelpyQt QTableView не отображает число (int, float и т. Д.)
self.material_model = QtGui.QStandardItemModel(self)
self.proxy = QtGui.QSortFilterProxyModel(self)
self.proxy.setSourceModel(self.material_model)
self.t_material.setModel(self.proxy)
Однако, если я пытаюсь поставить номера/значения в таблицу он не будет отображаться на всех, используя следующий фрагмент кода:
for row in xrange(0, len(self.material.data)):
item = QtGui.QStandardItem(str(self.material.data[row]['name']))
self.material_model.setItem(row, 0, item)
item2 = QtGui.QStandardItem()
item2.setData(QtCore.Qt.DisplayRole,float(999.99))
self.material_model.setItem(row, 1, item2)
Я пробовал несколько вариантов, включая Qt.DisplayRole вместо Qt.EditRole. Но из других сообщений у меня возникает ощущение, что не каждый метод и функциональность реализованы в pyQt и поэтому не решались слишком много играть (я уже вложил пару часов, хотя). И теперь я надеюсь, что вы поможете мне решить эту проблему. Возможно, мой подход не подходит для того, что я пытаюсь сделать, что в основном фильтрует контент по тексту (именам) и значениям (интервалу). Я использую pyQt, Windows7, и данные берутся из SQLite DB, используя самозаписываемую оболочку запроса вместо QtSQL.
Любое понимание оценено!
Приветствия,
Бен
Спасибо, это действительно работает, однако сортировка неправильная, так как, например, 10 не следует 11, а 100. Кроме того, я сомневаюсь, что фильтрация на интервале будет работать. Пожалуйста, поправьте меня, если я ошибаюсь. Предполагается ли, что весь QTableView будет работать только со строками? –
Виджеты отображения данных, такие как QTableView, QListView принимают только QString как входные данные в свой метод addItem. Вы можете сортировать элемент до преобразования их в строки и вставки их в таблицу. – scottydelta