Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Nidxogg от Июль 26, 2015, 19:47



Название: Qt style sheet + QPalette
Отправлено: 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(), но не работает.
Может кто подскажет выход из проблемы?


Название: Re: Qt style sheet + QPalette
Отправлено: vipet от Июль 26, 2015, 21:53

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

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

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



Название: Re: Qt style sheet + QPalette
Отправлено: Nidxogg от Июль 26, 2015, 23:17
Цитировать
который стилизуется как ссылка через CSS/QSS.
Можно поподробнее?




Название: Re: Qt style sheet + QPalette
Отправлено: vipet от Июль 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" .)


Название: Re: Qt style sheet + QPalette
Отправлено: Nidxogg от Июль 27, 2015, 21:53
А сам цвет ссылки как задать в qss?
Ну и получается все равно ссылку через <a href> задавать в лейбл?



Название: Re: Qt style sheet + QPalette
Отправлено: vipet от Июль 28, 2015, 13:22
А сам цвет ссылки как задать в qss?
Ну и получается все равно ссылку через <a href> задавать в лейбл?

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

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


Название: Re: Qt style sheet + QPalette
Отправлено: Nidxogg от Июль 28, 2015, 18:37
но в классе LinkLabel : public QLabel надо делать свои сигналы, в частности на клик мыши. Это либо через переопределение protected методов ( *Event) либо через eventFilter()
Вот теперь понял мысль ;)
Благодарю

Тему можно закрыть.