Я пытаюсь установить цвет фона QToolBar в конструкторе Qt следующим образом в таблице стилей background : rgb(30, 30, 30)
, По какой-то причине цвет фона применяется только к фону действия, как видно на изображении. Как я могу изменить цвет всей панели инструментов?
Редактировать.
Даже если я изменю цвет фона всего моего окна, область панели инструментов не будет затронута:
Это пустое приложение виджетов 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. Смотрите мой собственный ответ ниже.
Хорошо, я покопался и нашел это 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)
исправил проблему. Не знаю, почему мой вопрос был отклонен, хотя.
Вы можете использовать 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)}");
Пожалуйста, проверьте изображение ниже для вашей справки:
Я надеюсь, что вы хотите панель инструментов в соответствии с изображением выше.
Я использую Ubuntu и код user256 .. не работает. Но я попробовал код Samurai Jack, и он работает. Вот где ваш код не работает:! Hover недействителен. Чтобы получить код, который вы хотите, сделайте это:
ui->mainToolBar->setStyleSheet("QToolButton:hover {background-color: darkgray; }"" QToolBar {background: rgb(30, 30, 30) }");
куда :hover
это директива CSS, которая, как я предполагаю, вы пытаетесь сделать. Я тестирую это на Ubuntu 15.04, и это работает.
Я знаю, что это уже пока, но я испытал проблему с фоном ToolBar и обнаружил, что это можно изменить с помощью QPalette. Главное, чтобы цветовая роль QPalette была установлена как QPlatte :: Button.