Russian Qt Forum

Qt => Общие вопросы => Тема начата: Eagle от Апрель 07, 2007, 14:54



Название: QTreeWidget и DoubleCkick()
Отправлено: Eagle от Апрель 07, 2007, 14:54
Есть QTreeWidget. Необходимо при двойном щелчке, допустим, на второй колонке отрисовать там QLineEdit чтобы ввести значение.
Посмотрел пример в документации про QItemDelegate в QTableWidget c QTimeEdit и сделал наподобии. Но createEditor(...) почему-то не срабатывал, а вот paint отрабатывал нормально.
Вопрос в следующем. Как отрабатывать делегат только при нужном мне событии, а именно по даблклику?


Название: QTreeWidget и DoubleCkick()
Отправлено: Racheengel от Апрель 08, 2007, 12:50
как я понял, тебе нужно что-то типа этого:

http://ii-system.com/soft/vbrowser/vbrowser.htm

компонент в исходниках, делает как раз то, что ты описал.


Название: QTreeWidget и DoubleCkick()
Отправлено: Eagle от Апрель 09, 2007, 16:01
Если честно, то смотреть тот код не совсем было охото. :) Читаю я чужой код фигово. :(
Я нашёл свою ошибку, она заключалась в том, что я забыл для итема поставить флаг как редактируемого.
Для выбора по какому действию редактировать итем можно простым подключением в сигналу, допустим даблклик, и вызова в нём функции edit для этого итема. Других путей не нашёл. Хотя было бы интерестно узнать, можно ли это сделать при помощи флагов итема.

Тут возник ещё один вопрос.
В функции делегата paint пытаюсь окрасить фон в другой цвет, но нифига не выходит. Но при этом цвет шрифта нормально меняется. В чём может быть загвоздка?
option.palette->setColor(QPalette::Background, Qt::green)


Название: QTreeWidget и DoubleCkick()
Отправлено: goer от Апрель 09, 2007, 16:15
А у делегата стоит setAutoFillBackground( true )?
Кстати, кути в случае с бэком рекомендует пользоваться QPalette::Window, вместо QPalette::Background.


Название: QTreeWidget и DoubleCkick()
Отправлено: Eagle от Апрель 09, 2007, 16:44
Вот кстати насчёт автофила не знаю, посмотрю.

Насчёт QPalette::Window я в курсе. :)
В любом случае спасибо за помощь.


Название: QTreeWidget и DoubleCkick()
Отправлено: Eagle от Апрель 12, 2007, 12:34
Цитата: "goer"
А у делегата стоит setAutoFillBackground( true )?
Кстати, кути в случае с бэком рекомендует пользоваться QPalette::Window, вместо QPalette::Background.

Вообщем не помогло. Есть ещё какие-нибудь варианты?