Форум сайта python.su
Собственно, продолжаем серию “нубские вопросы”. Хочу сделать, чтобы при выборе мышкой определенного айтема в QTableWidget ячейка превращалась в комбобокс с возможными вариантами, из которых можно выбирать (как в, упаси господи, MS Access). Можно ли это сделать и если да, то как?
Офлайн
Вот пример, который идет с PyQt, кстати рекомендую эти примеры к изучению, там много прикольного.
Офлайн
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)при этом класс, естественно, наследуется от QtGui.QItemDelegate. Что я не так делаю?
TypeError
:
first argument of unbound method QItemDelegate.createEditor() must be a QItemDelegate instance
Отредактировано (Ноя. 7, 2009 18:19:25)
Офлайн
А я вообще с моделями еще дела не имел, только с виджетами. Может кто-нибудь меня убедит, что модели это круто? :)
Офлайн
чтобы редактирование ячейки шло не через QLineEdit, а тем виджетом, который нужен, необходимо обратиться к Model-View-Delegate… довольно просто всё делается с помощью QStandardItemModel, QTableView и QItemDelegate. пример есть выше, можно также обратиться к примерам в документации
Офлайн
Митрич
В случае с QTableWidget не нужен QStandartItemModel. Просто создается QItemDelegate и в нем оверрайдятся методы принятия-отдачи данных, модель уже есть.
Офлайн
Поднимая старое
pasaranaxСсылка уже не работает, подскажите, как вставить QComboBox в ячейку QTableWidget? Ссылки, код, подсказки - что-нибудь=)
Вот пример, который идет с PyQt, кстати рекомендую эти примеры к изучению, там много прикольного.
Combo = QtGui.QComboBox()
Combo.addItem('one')
Combo.addItem('two')
Combo.currentIndexChanged.connect(self.tempCombo)
mytable.setCellWidget(3, 4, Combo)
Отредактировано (Янв. 19, 2012 14:50:56)
Офлайн