2015-07-27 6 views
2

Я пытаюсь установить цвет bacground QToolBar в дизайне Qt со следующими таблицами стилей background : rgb(30, 30, 30). По какой-то причине фоновый цвет применяется только к фону действия, как это видно на изображении. Как изменить цвет всей панели инструментов?Цвет фона QToolBar применим только к действиям

enter image description here

Edit.

Даже если изменить цвет фона всего моего окна, площадь панели не влияет:

enter image description here

Это пустой по умолчанию Qt виджетов приложений, где я только добавил QToolBar и один QAction и в таблице стилей моего QMainWindow

background : red; 
QToolBar { background : red } 
QToolButton {background : red} 

Является ли это ожидаемое поведение или ошибка на Qt с Linux?

Редактировать.

Я пробовал этот код на Xubuntu 14.04 с Qt 4.8 и Qt 5.4.2. Кажется, это ошибка в Qt. См. Мой собственный ответ ниже.

+0

Дайте нам больше информации о вашем коде, пожалуйста. –

+0

Ну, на самом деле нет никакого кода, кроме «backgound: rgb (30, 30, 30)», добавленного к свойству styleSheet. Я использую qt designer. Я добавил QToolBar в QMainWindow, некоторые QActions на панель инструментов и в свойство «StyleSheet» я добавил фон: rgb (30, 30, 30). – user2563661

+0

Дополнительные контексты: OS, Qt Version вы, возможно, обнаружили ошибку, так как это должно работать, как вы пробовали, тем больше информации вы можете обеспечить лучше. – Mailerdaimon

ответ

3

Хорошо, поэтому я сделал некоторые копания и нашел это https://forum.qt.io/topic/23800/solved-change-background-color-of-qtoolbar-doesn-t-work-in-linux. По-видимому, это определенная проблема для некоторых дистрибутивов Linux. Добавление border: none после ошибки background : rgb(30, 30, 30) устраняет проблему. Не знаю, почему мой вопрос был занижен.

+0

Я протестировал код на своей машине Linux, и он работает, и эта ветка лет, поэтому ее необходимо исправить. скопировать и вставить код на свой вопрос, чтобы мы могли помочь вы, потому что не ясно, на какой бит вы застряли. Я дал вам решение, но, похоже, вы не учли это. – Poriferous

+0

Я пробовал ваш код, и он не работал, как я уже говорил. Весь код, который я написал, находится в вопросе выше. Единственный фрагмент кода, который у меня был: 'background: red;' 'QToolBar {background: red}' 'QToolButton {background: red}' Это не сработало. После того, как я добавил 'border: none' в QToolBar, он начал работать. Я не знаю, запутались ли вы в дизайнере Qt. Мне не нужно писать какой-либо C++. Существует свойство, называемое таблицей стилей, где я добавил код выше, – user2563661

+0

Странно, я изменил свой код на «background: red» для всех правил CSS, и результаты ожидаются. Я не знаю, почему это не сработает для вас. Это может быть проблемой с XFCE. – Poriferous

0

Вы можете использовать QT StyleSheet, как показано ниже:

ui->mainToolBar->setStyleSheet("QToolButton:!hover {background-color:lightgray} QToolBar {background: rgb(30, 30, 30)}"); 

Первый параметр цвета я устанавливаю для фона кнопки на панели задач и второй для настройки цвета панели инструментов фона.

Если вы хотите установить только цвет фона используйте StyleSheet, как показано ниже:

ui->mainToolBar->setStyleSheet("QToolBar {background: rgb(30, 30, 30)}"); 

Пожалуйста, проверьте ниже изображения для справки:

enter image description here

Я надеюсь, что вы хотите панель инструментов, как указано выше образ.

+0

Это относится только к области под QAction. Я создал пустой проект с QMainWindow QToolBar и одним QAction, который все еще не работает. Действительно ли этот код работает для вас? – user2563661

+0

да, я проверил! Я поставлю снимок экрана, только для вашей справки –

+0

@ user2563661: Я обновил ответ. Вы так хотите? –

0

Я использую код Ubuntu и user256 .. не работает. Но я пробовал код Самурая Джека, и он работает. Вот где ваш код не работает:! Hover недействителен. Для того, чтобы получить код, который вы хотите, сделайте следующее:

ui->mainToolBar->setStyleSheet("QToolButton:hover {background-color: darkgray; }" 
           " QToolBar {background: rgb(30, 30, 30) }"); 

Где :hover директива CSS, которая является то, что я предполагаю, что вы пытаетесь сделать. Я тестирую это на Ubuntu 15.04, и он работает.

+0

Я не пытаюсь установить эффект зависания. Я просто пытаюсь установить цвет фона всей панели инструментов. Похоже, что в моей системе 'QToolBar {background: rgb (30, 30, 30)}' не имеет никакого эффекта. – user2563661

+0

Затем удалите директиву ': hover', и вы должны получить нужный стиль. – Poriferous

+0

:! Hover был тем, что предложил Самурай Джек. У меня его нет в моем фактическом коде. Я обновил в вопросе изображение пустого проекта по умолчанию, в котором я только пытаюсь изменить цвет панели инструментов. Нет эффекта. – user2563661

Смежные вопросы