Russian Qt Forum

Qt => Вопросы новичков => Тема начата: EDimasS от Июнь 24, 2014, 10:44



Название: StyleSheet для QFrame Qt 5.2.0
Отправлено: 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.


Название: Re: StyleSheet для QFrame Qt 5.2.0
Отправлено: Zerkin от Июнь 24, 2014, 10:48
Попробуйте frame->setStyleSheet("QFrame::frame {"...


Название: Re: StyleSheet для QFrame Qt 5.2.0
Отправлено: EDimasS от Июнь 24, 2014, 10:51
Попробуйте frame->setStyleSheet("QFrame::frame {"...
Это я тоже пробовал. Никакого результата.


Название: Re: StyleSheet для QFrame Qt 5.2.0
Отправлено: Zerkin от Июнь 24, 2014, 10:53
Ой, это я Вам откровенную фигню написал.


Название: Re: StyleSheet для QFrame Qt 5.2.0
Отправлено: GreatSnake от Июнь 24, 2014, 10:56
Код
C++ (Qt)
frame->setObjectName( "frame" );
frame->setStyleSheet( "#frame { ... }" );


Название: Re: StyleSheet для QFrame Qt 5.2.0
Отправлено: carrygun от Июнь 24, 2014, 10:56
А если перед setStyleSheet сделать frame->setObjectName("frame")?

Опоздмас  :)


Название: Re: StyleSheet для QFrame Qt 5.2.0
Отправлено: EDimasS от Июнь 24, 2014, 11:01
Код:
frame->setObjectName( "frame" );
Ситуация разрешена. Большое всем спасибо.  :)