Название: [Qt4.2.3]Проблема с видом курсора в QTextEdit Отправлено: Разуев Максим от Мая 18, 2007, 14:03 Никак нимогу изменить курсор(графический, не TextCursor) в QTextEdit при нажатии кнопки Control.
Пробовал переопределить MouseMoveEvent, но редактор отлавливает это событие только вне зоны текста (например на полосе прокрутки). MouseTracking - включено. KeyPressEvent несмотря на наличие кода кнопки Control, нажатие на неё не обрабатывает. Название: [Qt4.2.3]Проблема с видом курсора в QTextEdit Отправлено: SABROG от Мая 18, 2007, 21:42 У многих контролов есть так называемый viewport, это widget который лежит поверх основного виджета, именно в нем рисуется текст в QTextEdit, итемы в QTreeView.
Т.е. тебе надо перехватывать события именно с viewporta, а не с основного виджета контрола. Название: [Qt4.2.3]Проблема с видом курсора в QTextEdit Отправлено: Разуев Максим от Мая 19, 2007, 00:12 Каким образом это реализовать в классе наследнике QTextEdit. Только через фильтр событий?
Название: [Qt4.2.3]Проблема с видом курсора в QTextEdit Отправлено: SABROG от Мая 19, 2007, 00:34 Либо наследуй QTextEdit и переопределяй метод, либо InstallEventFilter
Название: [Qt4.2.3]Проблема с видом курсора в QTextEdit Отправлено: Разуев Максим от Мая 19, 2007, 06:55 Я и говорю что наследовал QTextEdit и переопределял его метод MouseMoveEvent. Но похоже на viewport Edit-а он не работает.
Название: [Qt4.2.3]Проблема с видом курсора в QTextEdit Отправлено: SABROG от Мая 19, 2007, 12:02 QTextEdit наследуется таким образом:
QObject->QWidget->QFrame->QAbstractScrollArea->QTextEdit В QAbsctractScrollArea все эвенты QWidgeta переопределяются, и эти методы становятся виртуальными, причем они должны использовать viewport. Значит унаследовав QTextEdit и объявив в своем классе эти эвенты ты автоматически уже используешь viewport. Но есть еще метод viewportEvent, в принципе он не должен использоваться, т.к. должно и так все работать, но мало ли: Цитировать bool QAbstractScrollArea::viewportEvent ( QEvent * event ) [virtual protected] The main event handler for the scrolling area (the viewport() widget). It handles the event specified, and can be called by subclasses to provide reasonable default behavior. Returns true to indicate to the event system that the event has been handled, and needs no further processing; otherwise returns false to indicate that the event should be propagated further. You can reimplement this function in a subclass, but we recommend using one of the specialized event handlers instead. Specialised handlers for viewport events are: paintEvent(), mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), wheelEvent(), dragEnterEvent(), dragMoveEvent(), dragLeaveEvent(), dropEvent(), contextMenuEvent(), and resizeEvent(). Название: [Qt4.2.3]Проблема с видом курсора в QTextEdit Отправлено: Разуев Максим от Мая 19, 2007, 15:05 У меня в поле ввода обрабатывается MouseClick и не хочет MouseMove.
viewportEvent я попробую. viewportEvent не работает. Вообще прикол в том что через него курсор меняется на полосе прокрутки и похоже на границе того самого viewport. Я вообще хочу добиться чтобы курсор менялся над ссылками в тексте. Название: [Qt4.2.3]Проблема с видом курсора в QTextEdit Отправлено: Разуев Максим от Мая 26, 2007, 04:17 Все никак не получается реализовать изменение курсора. Неужели никто не сталкивался с такой проблемой.
Название: [Qt4.2.3]Проблема с видом курсора в QTextEdit Отправлено: Mikhail от Мая 26, 2007, 09:23 А использовал ли ты setMouseTracking( true ) для QTextEdit?
Ведь только после этого сработает mouseMoveEvent ( QMouseEvent * event ). Название: [Qt4.2.3]Проблема с видом курсора в QTextEdit Отправлено: Разуев Максим от Мая 26, 2007, 13:29 использовал.
Название: Re: [Qt4.2.3]Проблема с видом курсора в QTextEdit Отправлено: Danila_Bagrofff от Апреля 07, 2009, 09:06 возможно, кому-то поможет:
http://www.prog.org.ru/index.php?topic=8240.msg51528#msg51528 |