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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt style sheet + QPalette  (Прочитано 5284 раз)
Nidxogg
Гость
« : Июль 26, 2015, 19:47 »

Добрый вечер

Требуется установить цвет ссылки в QLabel
Сделал так
Код:
QString("<html>  <style> a:link {color: %1;}</style><a style = 'text-decoration:none' HREF=\"%2\">").arg(myColor).arg("linkhere") + namehere +"</a></html>")
Собственно работает, но возникла следующая проблема

Есть несколько qss файлов, как в них можно задать цвет myColor и получить его?
Идеальный вариантом было бы определить QPalette::link в каждом qss файле и получать цвет как palette().link().color().name(), но не работает.
Может кто подскажет выход из проблемы?
Записан
vipet
Бывалый
*****
Offline Offline

Сообщений: 452


Просмотр профиля
« Ответ #1 : Июль 26, 2015, 21:53 »


Для линков я использую наследника от QLabel (LinkLabel), который стилизуется как ссылка через CSS/QSS. (Т.е. без всякого HTML). В QSS прописаны разные стили для разных состояний объекта - обычный вид, наведена мышь, нажата мышь.

Т.о. проблем с обычным линком нету никаких.

А вот когда линк должен быть внутри текста, то это сложнее. Если это одна строка из нескольких слов, одно или пара из которых должно быть линком, то я использую два (если линк в начале или конце) или три (если линк посередине строки текста) объекта - QLabel, LinkLabel, QLabel.

Записан
Nidxogg
Гость
« Ответ #2 : Июль 26, 2015, 23:17 »

Цитировать
который стилизуется как ссылка через CSS/QSS.
Можно поподробнее?


Записан
vipet
Бывалый
*****
Offline Offline

Сообщений: 452


Просмотр профиля
« Ответ #3 : Июль 27, 2015, 20:45 »

Цитировать
который стилизуется как ссылка через CSS/QSS.
Можно поподробнее?

Код:
LinkLabel#forgot {
    color: #ddeeff;
    font: 9pt "Segoe UI Semibold";
    text-decoration: none;
    margin: 2px 0 0 6px;
}

LinkLabel#forgot:disabled {
    color: #aabbcc;
}

LinkLabel#forgot[state="hover"] {
    color: #ddeeff;
    font: 9pt "Segoe UI Semibold";
    text-decoration: underline;
    margin: 2px 0 0 6px;
}

LinkLabel - наследник QLabel
forgot - имя объекта
state - название свойства
hover - значение свойста

В данном примере подчеркивание у ссылки появляется только при наведении мыши. (Но это легко изменить, сделав "text-decoration: underline" вместо ": none" .)
Записан
Nidxogg
Гость
« Ответ #4 : Июль 27, 2015, 21:53 »

А сам цвет ссылки как задать в qss?
Ну и получается все равно ссылку через <a href> задавать в лейбл?

Записан
vipet
Бывалый
*****
Offline Offline

Сообщений: 452


Просмотр профиля
« Ответ #5 : Июль 28, 2015, 13:22 »

А сам цвет ссылки как задать в qss?
Ну и получается все равно ссылку через <a href> задавать в лейбл?

все цвета, шрифты, декорирование (подчеркнуто или нет) уже задано в CSS, который я написал выше.
в тексте ссылки href не нужен

но в классе LinkLabel : public QLabel надо делать свои сигналы, в частности на клик мыши. Это либо через переопределение protected методов ( *Event) либо через eventFilter()
Записан
Nidxogg
Гость
« Ответ #6 : Июль 28, 2015, 18:37 »

но в классе LinkLabel : public QLabel надо делать свои сигналы, в частности на клик мыши. Это либо через переопределение protected методов ( *Event) либо через eventFilter()
Вот теперь понял мысль Подмигивающий
Благодарю

Тему можно закрыть.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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