Найти - Пользователи
Полная версия: Выбор значения в QTableWidget
Начало » GUI » Выбор значения в QTableWidget
1
Enchantner
Собственно, продолжаем серию “нубские вопросы”. Хочу сделать, чтобы при выборе мышкой определенного айтема в QTableWidget ячейка превращалась в комбобокс с возможными вариантами, из которых можно выбирать (как в, упаси господи, MS Access). Можно ли это сделать и если да, то как?
pasaranax
Вот пример, который идет с PyQt, кстати рекомендую эти примеры к изучению, там много прикольного.
Enchantner
pasaranax
спасибо, отличный пример, только пока никак не пойму, как применить это не ко всем ячейкам таблицы, а только к определенным. Надо как-то химичить с QStandardItemModel? И потом, там для QTableView, а у QTableWidget метод setModel() приватный…

АПД: пытаюсь сделать так:
    def createEditor(self, parent, option, index):
if (index.column() == 0):
return QtGui.QItemDelegate.createEditor(parent, option, index)
editor = QtGui.QComboBox(parent)
editor.addItem(QtGui.QApplication.translate("SmallWindow", "One", None, QtGui.QApplication.UnicodeUTF8))
editor.addItem(QtGui.QApplication.translate("SmallWindow", "Two", None, QtGui.QApplication.UnicodeUTF8))
editor.installEventFilter(self)
return editor
вылетает ошибка:
return QtGui.QItemDelegate.createEditor(parent, option, index)
TypeError
:
first argument of unbound method QItemDelegate.createEditor() must be a QItemDelegate instance
при этом класс, естественно, наследуется от QtGui.QItemDelegate. Что я не так делаю?

Еще АПД:
Вроде все работает, если передавать первым аргументом self…

Все, кажись, разобрался :) Спасибо большое
pasaranax
А я вообще с моделями еще дела не имел, только с виджетами. Может кто-нибудь меня убедит, что модели это круто? :)
Митрич
чтобы редактирование ячейки шло не через QLineEdit, а тем виджетом, который нужен, необходимо обратиться к Model-View-Delegate… довольно просто всё делается с помощью QStandardItemModel, QTableView и QItemDelegate. пример есть выше, можно также обратиться к примерам в документации
Enchantner
Митрич
В случае с QTableWidget не нужен QStandartItemModel. Просто создается QItemDelegate и в нем оверрайдятся методы принятия-отдачи данных, модель уже есть.
spirits25
Поднимая старое
pasaranax
Вот пример, который идет с PyQt, кстати рекомендую эти примеры к изучению, там много прикольного.
Ссылка уже не работает, подскажите, как вставить QComboBox в ячейку QTableWidget? Ссылки, код, подсказки - что-нибудь=)

Всё, нашёл простой способ
        Combo = QtGui.QComboBox()
Combo.addItem('one')
Combo.addItem('two')
Combo.currentIndexChanged.connect(self.tempCombo)
mytable.setCellWidget(3, 4, Combo)
Просто, не правда ли?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB