Russian Qt Forum
Июнь 16, 2024, 14:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: StyleSheet для QFrame Qt 5.2.0  (Прочитано 5442 раз)
EDimasS
Гость
« : Июнь 24, 2014, 10:44 »

Всем доброго времени суток.

Ситуация такая. Для примера:
Откроем QT Designer, закинем на новое окно frame, в него другой компонент(label или button). Если в StyleSheet Frame'а вставить:
Код:
border-top-left-radius: 6px;
border-top-right-radius: 6px;
border: 2px solid #020202;
то сам Frame и все его дочерние компоненты примут этот стиль, что не очень хорошо. Для того чтобы стиль был только на Frame нужно сделать так:
Код:
QFrame#frame {
border-top-left-radius: 6px;
border-top-right-radius: 6px;
border: 2px solid #020202;
}

Но это прокатывает в QT Designer. В моем случае окно нужно написать ручками в QT Creator. И вот тут проблема.

Код:
QFrame *frame = new QFrame;
frame->setStyleSheet("QFrame#frame {"
                               "border-top-left-radius: 6px;"
                               "border-top-right-radius: 6px;"
                               "border: 2px solid #020202;}");
Вот таки образом вообще стиль не работает!

Код:
QFrame *frame = new QFrame;
frame->setStyleSheet("border-top-left-radius: 6px;"
                               "border-top-right-radius: 6px;"
                               "border: 2px solid #020202;");
А вот так стиль переходи на дочерние компоненты, что мне не нужно. Помогите разобраться почему так и как сделать чтобы стиль был только на Frame.
Записан
Zerkin
Чайник
*
Offline Offline

Сообщений: 98


Просмотр профиля
« Ответ #1 : Июнь 24, 2014, 10:48 »

Попробуйте frame->setStyleSheet("QFrame::frame {"...
« Последнее редактирование: Июнь 24, 2014, 10:50 от Zerkin » Записан
EDimasS
Гость
« Ответ #2 : Июнь 24, 2014, 10:51 »

Попробуйте frame->setStyleSheet("QFrame::frame {"...
Это я тоже пробовал. Никакого результата.
Записан
Zerkin
Чайник
*
Offline Offline

Сообщений: 98


Просмотр профиля
« Ответ #3 : Июнь 24, 2014, 10:53 »

Ой, это я Вам откровенную фигню написал.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Июнь 24, 2014, 10:56 »

Код
C++ (Qt)
frame->setObjectName( "frame" );
frame->setStyleSheet( "#frame { ... }" );
Записан

Qt 5.11/4.8.7 (X11/Win)
carrygun
Гость
« Ответ #5 : Июнь 24, 2014, 10:56 »

А если перед setStyleSheet сделать frame->setObjectName("frame")?

Опоздмас  Улыбающийся
Записан
EDimasS
Гость
« Ответ #6 : Июнь 24, 2014, 11:01 »

Код:
frame->setObjectName( "frame" );
Ситуация разрешена. Большое всем спасибо.  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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