Определить текущий цвет бордера
От: Robin20  
Дата: 15.05.17 10:47
Оценка:
Делаю виджет на основе QFrame, который примыкает снизу к виджету QTextEdit.

Как проще всего установить border, для QFrame, чтобы цвет был тот же что и текущего цвета и стиля у QTextEdit?

Ну то есть я например сделал пока так:

frm->setStyleSheet("QFrame {border: 1px solid #aaaaaa;"
                           "border-top: none;"
                           "border-style: solid;"
                           "background: #fafafa;"
                           "font-size: 9pt;}"
                           );


Но это работает только на конкретном стиле. А мне надо чтобы везде было одинаково. background тоже вообще-то нужно какой-то системный цвет, но только более светлый чем по-умолчанию.
Re: Определить текущий цвет бордера
От: SaZ  
Дата: 15.05.17 12:02
Оценка:
Здравствуйте, Robin20, Вы писали:

R>...

R>Но это работает только на конкретном стиле. А мне надо чтобы везде было одинаково. background тоже вообще-то нужно какой-то системный цвет, но только более светлый чем по-умолчанию.

QApplication::setStyle( QStyleFactory::create( "Fusion" ) );


А вообще, по-хорошему, стили нужно или задавать для всего или не задавать вообще.
Re[2]: Определить текущий цвет бордера
От: Robin20  
Дата: 15.05.17 13:32
Оценка:
Здравствуйте, SaZ, Вы писали:

SaZ>Здравствуйте, Robin20, Вы писали:


R>>...

R>>Но это работает только на конкретном стиле. А мне надо чтобы везде было одинаково. background тоже вообще-то нужно какой-то системный цвет, но только более светлый чем по-умолчанию.

SaZ>
SaZ>QApplication::setStyle( QStyleFactory::create( "Fusion" ) );
SaZ>


SaZ>А вообще, по-хорошему, стили нужно или задавать для всего или не задавать вообще.


Но мне нужен фрейм с бордером. Если не указать цвет. Он вообще никакой не отрисует. То есть будет без бордера.

Я просто хочу выяснить каким цветом в текущем стиле мне нужно фрейм застилить бордер. Чтобы было одинаково с ТекстЕдитом.
Re[3]: Определить текущий цвет бордера
От: SaZ  
Дата: 15.05.17 15:04
Оценка:
Здравствуйте, Robin20, Вы писали:

R>...

R>Я просто хочу выяснить каким цветом в текущем стиле мне нужно фрейм застилить бордер. Чтобы было одинаково с ТекстЕдитом.

Вангую...

В общем, css как таковой не используется в Qt. На основе содержимого css строится специальный QProxyStyle. Эта операция необратима. Т.е. нельзя обратно получить css на основе какого-либо виджета или приложения.
Если уж так хочется — можно брать палитру из текущего QStyle и выковыривать значения оттуда. Но это какой-то индусский подход. Потому что может отличаться на разных настройках винды.
Намного лучше заранее продумать то, как вы будете кастомизировать интерфейс. Как я понял, для вашей задачи достаточно в css указать одинаковый цвет для вашего QFrame и для бордюра у QTextEdit.

Повторюсь. Нормальный путь: либо внутри css кастомизировать абсолютно все используемые виджеты, либо не использовать css вообще.
Re[4]: Определить текущий цвет бордера
От: Robin20  
Дата: 15.05.17 16:13
Оценка:
Здравствуйте, SaZ, Вы писали:

SaZ>Здравствуйте, Robin20, Вы писали:


R>>...

R>>Я просто хочу выяснить каким цветом в текущем стиле мне нужно фрейм застилить бордер. Чтобы было одинаково с ТекстЕдитом.

SaZ>Вангую...


SaZ>В общем, css как таковой не используется в Qt. На основе содержимого css строится специальный QProxyStyle. Эта операция необратима. Т.е. нельзя обратно получить css на основе какого-либо виджета или приложения.

SaZ>Если уж так хочется — можно брать палитру из текущего QStyle и выковыривать значения оттуда. Но это какой-то индусский подход. Потому что может отличаться на разных настройках винды.
SaZ>Намного лучше заранее продумать то, как вы будете кастомизировать интерфейс. Как я понял, для вашей задачи достаточно в css указать одинаковый цвет для вашего QFrame и для бордюра у QTextEdit.

SaZ>Повторюсь. Нормальный путь: либо внутри css кастомизировать абсолютно все используемые виджеты, либо не использовать css вообще.


Ну неужели нет возможности просто нарисовать бордюр у QFrame текущим стилем и цветом как для других контролов ничего не меняя и не навязывая пользователю свой стиль?
Re[5]: Определить текущий цвет бордера
От: K13 http://akvis.com
Дата: 16.05.17 13:30
Оценка:
R>Ну неужели нет возможности просто нарисовать бордюр у QFrame текущим стилем и цветом как для других контролов ничего не меняя и не навязывая пользователю свой стиль?

А просто переопределить палитру для конкретного виджета не помогает?
Re[6]: Определить текущий цвет бордера
От: Robin20  
Дата: 16.05.17 18:11
Оценка:
Здравствуйте, K13, Вы писали:

R>>Ну неужели нет возможности просто нарисовать бордюр у QFrame текущим стилем и цветом как для других контролов ничего не меняя и не навязывая пользователю свой стиль?


K13>А просто переопределить палитру для конкретного виджета не помогает?


Палитра вообще не работает в связке с CSS насколько я понял.

Вообще в принципе я понял, что одно с другим не дружит. Потому надо использовать что-то одно. Раз нет обратной связи то придётся не использовать CSS а рисовать вручную борлер наверное. Используя примитивы и.т.п.
Re[5]: Определить текущий цвет бордера
От: SaZ  
Дата: 17.05.17 07:54
Оценка:
Здравствуйте, Robin20, Вы писали:

R>Ну неужели нет возможности просто нарисовать бордюр у QFrame текущим стилем и цветом как для других контролов ничего не меняя и не навязывая пользователю свой стиль?


QProxyStyle. Но если быть глобалистом-перфекционистом, то это лютый геммор.
Отредактировано 17.05.2017 7:55 SaZ . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.