Название: [РЕШЕНО] Установить значение QItemDelegate Отправлено: braboar от Декабрь 02, 2010, 17:33 Создал я QItemDelegate от QComboBox, добавил туда (для примера) строки: "ttyS0", "ttyS1" и т.д. Теперь мне бы хотелось установить, например, строку с ttyS1 из виджета, для которого этот делегат установлен, но как это сделать - не придумал. Как это реализовать? Заранее спасибо.
Название: Re: Установить значение QItemDelegate Отправлено: shirushizo от Декабрь 02, 2010, 20:06 >>Создал я QItemDelegate от QComboBox
1. Не совсем понятно: создан QItemDelegate, у которого редактор QComboBox или void setItemDelegate (QAbstractItemDelegate * delegate) >>добавил туда (для примера) строки: "ttyS0", "ttyS1" и т.д. Туда - это куда?! В комбобокс? в модель? >>...из виджета, для которого этот делегат установлен что за виджет? представление или комбобокс? ??? Название: Re: Установить значение QItemDelegate Отправлено: braboar от Декабрь 02, 2010, 21:46 Код: class Propreties: public QTableWidget { Код: class GlobalWidget { Название: Re: Установить значение QItemDelegate Отправлено: GreatSnake от Декабрь 03, 2010, 09:06 Ну что за народ...
Почему нельзя сразу по-нормальному всё описать. И что хотите получить в результате. Показывайте код наследника от QItemDelegate. Каким образом мы должны догадаться что такое "props->set()" ?! Толку от приведённого выше кода ровно 0. Уважайте людей. Название: Re: Установить значение QItemDelegate Отправлено: shirushizo от Декабрь 03, 2010, 19:40 Давайте сначала :)
У вас есть наследник от QTableWidget. Есть наследник от QItemDelegate. Делегат установлен для определенной строки QTableWidget. Теперь мне бы хотелось установить, например, строку с ttyS1 из виджета, для которого этот делегат установлен, но как это сделать - не придумал. Как это реализовать? Заранее спасибо. Вам надо установить значение строки в таблице? Тогда есть метод void QTableWidget::setItem ( int row, int column, QTableWidgetItem * item ). Что-то вроде:Код: Propreties->setItem(2,1,new QTableWidgetItem ("ttyS1")); Если вы хотите, чтобы по двойному щелчку по ячейке появился редактор QComboBox и там было ткеущеее значение "ttyS1", а в списке "ttyS0",,"ttyS1","ttyS2","ttyS3", то надо переопределить в делегате 3 функции 1.Создание редактора - создаем QComboBox со значениями "ttyS0",,"ttyS1","ttyS2","ttyS3" Код: createEditor(QWidget *parent,const QStyleOptionViewItem &option,const QModelIndex &index){ Код: setEditorData(QWidget *editor, const QModelIndex &index) Название: Re: Установить значение QItemDelegate Отправлено: braboar от Декабрь 07, 2010, 11:35 Если вы хотите, чтобы по двойному щелчку по ячейке появился редактор QComboBox и там было ткеущеее значение "ttyS1", а в списке "ttyS0",,"ttyS1","ttyS2","ttyS3", то надо переопределить в делегате 3 функции 1.Создание редактора - создаем QComboBox со значениями "ttyS0",,"ttyS1","ttyS2","ttyS3" Код: createEditor(QWidget *parent,const QStyleOptionViewItem &option,const QModelIndex &index){ Код: setEditorData(QWidget *editor, const QModelIndex &index) Вы все поняли правильно. И я это реализовал, работает. Проблема в другом. Я бы хотел изменить строку в QComboBox, когда редактор не активен, но не нашел способа дотянуться до редактора. Т.е. itemDelegate() вернет мне мой делегат с QComboBox, но как установить нужную строчку в QComboBox? Заранее спасибо, :) Название: Re: Установить значение QItemDelegate Отправлено: shirushizo от Декабрь 07, 2010, 19:59 То есть изменить элемент выпадающего списка у редактора-QComboBox?
Насчет красоты решения не уверен. Можно в делегате сохранить указатель на редактор. И описать метода(методы) для изменения элементов списка. Код: в h-файле Название: Re: Установить значение QItemDelegate Отправлено: braboar от Декабрь 08, 2010, 21:57 shirushizo, спасибо! Я не догадался сохранить указатель на редактор.
|