Название: [QTextEdit/QTextBrowser] Как заставить мигать курсор в Read Only режиме? Отправлено: iroln от Март 28, 2012, 11:27 Всем привет!
Имеем класс, наследуемый от QTextBrowser. Задача класса отображать текст без возможности редактирования, но при этом доступна навигация по тексту, текст можно выделять и копировать, а курсор должен отображаться и мигать. В режиме редактирования курсор мигает, в режиме Read Only курсор не мигает. Сейчас заданы следующие флаги и свойства: Код
Курсор отображается (|), но не мигает. Вопросы: 1. Можно как-то заставить текстовый курсор мигать в Read Only режиме, любым способом? 2. Как изменять вид текстового курсора? (в принципе это не очень важно, но может это позволит сделать мигающий курсор) Название: Re: [QTextEdit/QTextBrowser] Как заставить мигать курсор в Read Only режиме? Отправлено: GreatSnake от Март 28, 2012, 12:13 Имхо, такое поведение сконфузит пользователя.
Нужно не забывать главное правило GUI - избегать многозначности. Название: Re: [QTextEdit/QTextBrowser] Как заставить мигать курсор в Read Only режиме? Отправлено: iroln от Март 28, 2012, 12:40 GreatSnake, Возможно вы правы, но в других реализациях редакторов из различных тулкитов курсор мигает (например, Avalon Edit для WPF). Мигающий курсор лучше заметен.
Я думаю, можно сделать иначе, фильтровать событие KeyPress и не пропускать ничего кроме перемещения курсора. Такой вот кустарный Read Only режим. Только нужно будет ещё и мышку фильтровать и контекстное меню, а это геморрой. :) UPD: Ещё хочу заметить, что при предпросмотре в Qt Designer курсор мигает в Read Only режиме. Название: Re: [QTextEdit/QTextBrowser] Как заставить мигать курсор в Read Only режиме? Отправлено: GreatSnake от Март 28, 2012, 13:27 Ещё хочу заметить, что при предпросмотре в Qt Designer курсор мигает в Read Only режиме. У меня не мигает.Название: Re: [QTextEdit/QTextBrowser] Как заставить мигать курсор в Read Only режиме? Отправлено: iroln от Март 29, 2012, 10:20 Облазил "весь интернет", ничего не нашёл на счёт управления видом текстового курсора в QTextEdit. Похоже, в Qt просто нет публичного API для доступа к каретке в Edit-виджетах.
Вот тут у чела тоже проблема с миганием курсора: http://qt-project.org/forums/viewthread/1116 В принципе наплевать на мигание, но мне, например, надо изменить цвет фона виджета на тёмный, а цвет курсора я изменить не могу, в итоге курсор не виден на тёмном фоне. В общем фигня какая-то, товарищи. :) Название: Re: [QTextEdit/QTextBrowser] Как заставить мигать курсор в Read Only режиме? Отправлено: GreatSnake от Март 29, 2012, 11:22 В принципе наплевать на мигание, но мне, например, надо изменить цвет фона виджета на тёмный, а цвет курсора я изменить не могу, в итоге курсор не виден на тёмном фоне. В общем фигня какая-то, товарищи. :) Странно, т.к. курсор и текст должны рисоваться одним цветом.Название: Re: [QTextEdit/QTextBrowser] Как заставить мигать курсор в Read Only режиме? Отправлено: iroln от Март 29, 2012, 14:45 У меня текст раскрашивается через Html (setTextColor), а цвет фона задаётся таким образом:
Код
Поэтому текстовый курсор ничего не знает об изменении цветов. Можно использовать стили для установки цвета и цвета фона, но если установить светлый цвет текста (color), то это изменяет цвет надписей контекстных меню и прочее, а если поставить цвет фона через background-color, это целиком изменяет цвет виджета (в том числе цвет скроллбаров), в общем всюду засады. |