Название: Ещё вопрос по QItemDelegate Отправлено: UVV от Август 31, 2007, 06:01 Нужно сделать так, чтобы при редактировании данных в QTableView в одной из колонок был ComboBox со списком возможных значений. Значение составляется из 5 разных полей БД. Я реализовал это дело следующим образом:
Код: query.exec("select id, surname, name, patronymic, field1, field2..."); Код: void MyDelegate::paint(QPainter *painter, Вроде бы всё работает, однако появились следующие неудобства, которые я пока не знаю как решить:
Название: Re: Ещё вопрос по QItemDelegate Отправлено: denka от Август 31, 2007, 07:14 1. У тя переопределен QItemDelgate::sizeHint?
2. Id присутсвует в каком-то столбце? Если да то используеш setSort или sort. Если нет создаеш свою QSortFilterProxyModel. Название: Re: Ещё вопрос по QItemDelegate Отправлено: UVV от Август 31, 2007, 09:56 1. У тя переопределен QItemDelgate::sizeHint? Нет, я его не переопределял.Нужно самому задать максимальный размер? 2. Id присутсвует в каком-то столбце? Если да то используеш setSort или sort. Забыл сказать. В QTableView отображён QSqlRelationalTableModel. В предыдущем примере я показал, что в id (query.value(0).toInt()) находится в самом Combobox'e.Если нет создаеш свою QSortFilterProxyModel. Название: Re: Ещё вопрос по QItemDelegate Отправлено: denka от Август 31, 2007, 10:12 1. Переопредели sizeHint и для нужного индекса возвращай нужный размер
2. То есть как я понял у тя id это индекс Combobox'a который храниться в QSqlRelationalTableModel, тогда надо использовать setSort или sort этого класса. т.е.: Код: model->sort( колонка_с_id, Qt::AscendingOrder ); Название: Re: Ещё вопрос по QItemDelegate Отправлено: UVV от Сентябрь 02, 2007, 09:30 1. Переопредели sizeHint и для нужного индекса возвращай нужный размер Я что-то не понял. Для одной модели данных нужно использовать одни делегат-класс на все столбцы сразу или на каждый столбец по делегату?2. То есть как я понял у тя id это индекс Combobox'a который храниться в QSqlRelationalTableModel, тогда надо использовать setSort или sort этого класса. т.е.: Что-то я совсем запутался или просто не правильно объясняю:Код: model->sort( колонка_с_id, Qt::AscendingOrder ); Код: combobox->addItem(i.key(), i.value()); i.value() - id Если я использую setSortingEnabled, то как мне использовать просто sort? |