Название: Делегат отрисовыввается только в режиме редактирования по двойному клику мыши. Отправлено: Pupil от Июня 11, 2013, 10:34 Добрый день!
При присоединении делегата, наследующего QSpinBox, в QTableWidget делегает не появляется сразу в ячейках заданного столбца, а появляется только при двойном клике мыши по данной ячейке. Возможно, это лишнее эстетство, но можно ли, что делегат появлялся в ячейках сразу? Пытался решить вопрос через конструктор, но не получилось. Код: class TableDelegateInt : public QItemDelegate Название: Re: Делегат отрисовыввается только в режиме редактирования по двойному клику мыши. Отправлено: mutineer от Июня 11, 2013, 10:40 Переопредели метод paint() и в нем рисуй в ячейке что хочешь
Название: Re: Делегат отрисовыввается только в режиме редактирования по двойному клику мыши. Отправлено: Pupil от Июня 11, 2013, 12:51 Насколько я понимаю, для paint необходимо задавать правильное изображение делегата со значением числа в нужный момент.
Как получить такое изображение? Принтскрин? Название: Re: Делегат отрисовыввается только в режиме редактирования по двойному клику мыши. Отправлено: mutineer от Июня 11, 2013, 12:56 Используй QStyle::drawComplexControl и QStyle::drawControl
Название: Re: Делегат отрисовыввается только в режиме редактирования по двойному клику мыши. Отправлено: lit-uriy от Июня 12, 2013, 08:19 Pupil, посмотри пример "Star Delegate" (itemviews\stardelegate)
там вообще специфический делегат рисуется. Название: Re: Делегат отрисовыввается только в режиме редактирования по двойному клику мыши. Отправлено: lit-uriy от Июня 12, 2013, 08:21 П.С.
При присоединении делегата, наследующего QSpinBox, в QTableWidget делегает не появляется сразу в ячейках заданного столбца, а появляется только при двойном клике мыши по данной ячейке. Делегат появляется сразу (именно он рисует ячейку в представлении). А по двойному щелчку по ячейке делегат помещает на её место виджет-редактор. Название: Re: Делегат отрисовыввается только в режиме редактирования по двойному клику мыши. Отправлено: Pupil от Июня 12, 2013, 12:37 Не спорю с теоремой Ферма и благодарю за сакральную геометрию!
В таком случае вопрос поставлю по-другому: Каким образом реализовать, чтобы при открытии формы делегат сразу помещал виджет-редактор в столбец QTableWidget? Я нашел метод QTableWidget - он работает, но требуется его везде таскать за собой, что в 21 веке - нелепо. ) Код: void QTableWidget::openPersistentEditor ( QTableWidgetItem * item ) опыта рисования делегата у меня нет. ) Название: Re: Делегат отрисовыввается только в режиме редактирования по двойному клику мыши. Отправлено: Fregloin от Июня 12, 2013, 16:10 я не пойму, вам нужно что бы все время отображались спинбоксы в столбце?
если так, то можно создавать их, и пихать в элемент через setCellWidget() Название: Re: Делегат отрисовыввается только в режиме редактирования по двойному клику мыши. Отправлено: Pupil от Июня 13, 2013, 08:02 Абсолютно верно. Спинбокс должен отображаться все время )
Название: Re: Делегат отрисовыввается только в режиме редактирования по двойному клику мыши. Отправлено: lit-uriy от Июня 13, 2013, 19:07 Pupil почитай тему про стили в документации Qt (http://www.doc.crossplatform.ru/qt/4.6.x/style-reference.html), там описаны элементарные графические элементы из которых строятся виджеты.
И используй то о чём сказал mutineer П.С. на странице по ссылке даже тот-же SpinBox упоминается Название: Re: Делегат отрисовыввается только в режиме редактирования по двойному клику мыши. Отправлено: Pupil от Июня 14, 2013, 08:04 Спасибо, Друзья!
Начал изучать и пробовать ) Название: Re: Делегат отрисовыввается только в режиме редактирования по двойному клику мыши. Отправлено: lit-uriy от Июня 15, 2013, 15:38 Pupil возможно это для тебя:
http://www.qtforum.org/article/27466/qstyleoptioncombobox-as-paint-delegate-for-qtableview-is-blank.html Так же на вооружение возьми: QStyleOptionSpinBox (http://www.doc.crossplatform.ru/qt/4.6.x/qstyleoptionspinbox.html) Название: Re: Делегат отрисовыввается только в режиме редактирования по двойному клику мыши. Отправлено: Pupil от Июня 15, 2013, 18:44 Спасибо!
|