Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: xintrea от Январь 20, 2009, 16:47



Название: После смены курсора мышки, курсор перестаёт реагировать на ссылки.
Отправлено: xintrea от Январь 20, 2009, 16:47
Здравствуйте!


У меня в программе есть некоторые места, которые выполняются долго (больше секунды). Чтобы показать пользователю, что процесс идет, перед долгим процессом я даю команды

Код:
QCursor cursor_wait=QCursor(Qt::BusyCursor);
qApp->setOverrideCursor(cursor_wait);

а по завершении долгих действий даю команду, чтобы вернуть состояние курсора

Код:
qApp->restoreOverrideCursor();

Все вроде бы работает - временно меняется вид курсора на курсор с часиками, потом снова курсор становится простой стрелкой.

Но есть одно но. Если в программе есть объект QLabel, который содержит URL, например так

Код:
 url=new QLabel(this);
 url->setTextInteractionFlags(Qt::TextSelectableByMouse |
                           Qt::TextSelectableByKeyboard |
                           Qt::LinksAccessibleByMouse |
                           Qt::LinksAccessibleByKeyboard);
 url->setVisible(true);
 url->setWordWrap(true);
 url->setText("<A HREF=\"http://prog.org.ru\">http://prog.org.ru</A>");

то при запуске программы, если на такое поле навести мышку, курсор превращается в "руку с указательным пальцем". Это правильно.

А вот если был длительный процесс, и вид курсора менялся, то после этого при наведении мышки на ссылку, курсор перестает превращаться в "руку с указательным пальцем". Он остается просто стрелкой.


Вопрос. Что делаю не так? Как правильно менять вид курсора, чтобы после он реагировал на другие элементы как положено?


Название: Re: После смены курсора мышки, курсор перестаёт реагировать на ссылки.
Отправлено: Dendy от Январь 20, 2009, 17:56
Попробуйте использовать курсор только для главного окна: QWidget::setCursor() / QWidget::unsetCursor().


Название: Re: После смены курсора мышки, курсор перестаёт реагировать на ссылки.
Отправлено: xintrea от Январь 20, 2009, 18:25
Попробуйте использовать курсор только для главного окна: QWidget::setCursor() / QWidget::unsetCursor().

Во, так заработало правильно.