Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: ieroglif от Ноябрь 21, 2011, 08:52



Название: [решено] a:hover в QLabel
Отправлено: ieroglif от Ноябрь 21, 2011, 08:52
запихиваю в QLabel хтмл линк. хочу стилизовать. в обычном состоянии всё работает нормально, стиль для "мышка наведена" игнорируется. пытался делать и через стиль QLabel::hover и через содержимый html <style>a:hover .... </style>
при установке стиля для QLabel - внутренний текст раскрашивается нормально если не ссылка. если ссылка - полностью игнорит правила от виджета.
на просторе интеренета решения примитивно-очевидные, но почему-то не работают =( тупой копи-паст не работает и всё.
qt 4.7.3 винда


Название: Re: a:hover в QLabel
Отправлено: ieroglif от Ноябрь 21, 2011, 10:25
Код
C++ (Qt)
   ui->label->setText("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0//EN' 'http://www.w3.org/TR/REC-html40/strict.dtd'>"
                         "<html><head><style type=text/css>"
                         "a:link {color:#55789b; text-decoration:none;}"
                         "a:hover {color:#f9e699; text-decoration:underline;}"
                         "</style></head><body><a href='http://google.ru'>Google</a></body></html>");
 
проверьте этот код, пожалуйста.
у меня оно не пашет =(


Название: Re: a:hover в QLabel
Отправлено: andrew.k от Ноябрь 21, 2011, 13:40
У кутишных виджетов не совсем полноценный CSS. Его еще называют QSS.
Поэтому многие вещи не работают.


Название: Re: a:hover в QLabel
Отправлено: marbius от Ноябрь 21, 2011, 15:49
пытался делать и через стиль QLabel::hover

http://doc.qt.nokia.com/stable/stylesheet-reference.html
Цитировать
QLabel   Supports the box model. Does not support the :hover pseudo-state.


Название: Re: a:hover в QLabel
Отправлено: ieroglif от Ноябрь 21, 2011, 16:02
ага.. и решение в итоге такое:
::hover для QLabel в самом QSS обрабатывается прекрасно.
соответсвенно через QSS устанавливаю расцветки, для QLabel установлен курсор "рука", на сам QLabel повешен eventFilter, который отслеживает клик и через QDesktopServices::openUrl(QUrl) делает своё грязное дело =)