Russian Qt Forum
Сентябрь 30, 2024, 16:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Рисование focus rectangle на QTreeWidgetItem  (Прочитано 4964 раз)
lxlight
Гость
« : Октябрь 03, 2007, 20:47 »

Всем привет.
В общем нужно в событии dragMoveEvent рисовать focus rect вокруг айтема под курсором, никак не получается это реализовать, может кто подскажет как? Прбовал через QPainter:
Код:
QPainter painter( this );
painter.setPen( Qt::DashLine );
painter.drawRect( this->visualItemRect(i) );
Но судя по "QPainter::begin: Widget painting can only begin as a result of a paintEvent" рисовать можно только внутри paintEvent а мне не хотелось бы его полностью переписывтаь:(
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Октябрь 03, 2007, 21:15 »

Ну так запихниуте код рисования в paintEvent добавив определённые условия, при котором должна рисоваться rect. Какая проблема?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
lxlight
Гость
« Ответ #2 : Октябрь 04, 2007, 14:28 »

Проблема в том, что такое поведение виджета (рисование рамки фокуса) является стандартным и уже реализовано (если не переписывать dragMoveEvent, то все замечательно, за исключением того что мне нужно поместить свой код именно в этот метод), а потому не хочется городить велосипеды и к томуже заново реализовывать перерисовку всего содержимого виджета.
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #3 : Октябрь 04, 2007, 17:57 »

Проблема в том, что такое поведение виджета (рисование рамки фокуса) является стандартным и уже реализовано (если не переписывать dragMoveEvent, то все замечательно, за исключением того что мне нужно поместить свой код именно в этот метод), а потому не хочется городить велосипеды и к томуже заново реализовывать перерисовку всего содержимого виджета.
Так что мешает выполнить свои действия и в конце вызвать dragMoveEvent родителя?
Записан
Dodge
Гость
« Ответ #4 : Октябрь 05, 2007, 13:07 »

Похоже автор несовсем понял метод решения...

Приведу пример:
Код:
void QMyWidget::paintEvent( QPaintEvent * event ) {

      if ( dragitem ) {
          QPainter painter( this->viewport() ); // или просто this, зависит от виджета
          // рисуем свой фокус рект
      }

       QWidget::paintEvent( event );
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.096 секунд. Запросов: 23.