Удалить градиент из QToolBar в OS X
Я пишу приложение в Qt, которое использует элементы QToolBar. В Linux и Windows все выглядит нормально. Но в OS X фон QToolBar имеет ужасный градиент. Подскажите пожалуйста, как мне это убрать?
UPD.: Я использую Qt 5.2.
4 ответа
Кажется, панель инструментов вообще игнорирует styleSheets на Mac (по крайней мере, в Qt 5.2.1). Я смог удалить градиент, используя стили, например, используя стиль Windows. Кнопки панели инструментов не затрагиваются этим.
toolBar->setStyle(QStyleFactory::create("windows"));
Способ выше с QStyleSheet является правильным. Другой подход заключается в применении, например, объекта QWindowsStyle с setStyle к QToolBar. QWindowsStyle - это то, что будет выглядеть просто и стандартно на любой платформе. Я использую его, когда мне хочется, чтобы на всех платформах внешний вид и внешний вид были абсолютно одинаковыми, несмотря на то, что на win/mac/unx все выглядит иначе.
Вы пробовали QStyleSheets?
http://qt-project.org/doc/qt-5/stylesheet-examples.html
http://qt-project.org/doc/qt-5/stylesheet-reference.html
QStatusBar * bar;
bar = new QStatusBar;
bar->setStyleSheet("background: transparent;");
// bar->setStyleSheet("background: none;");
// bar->setStyleSheet("background: white;");
bar->showMessage("StatusBar");
Или, если вы используете его в контексте QMainWindow, оно, вероятно, будет выглядеть так:
this->statusBar()->setStyleSheet( //...
Надеюсь, это поможет.
Это известная ошибка также в 2020 году с Qt5.12 (и, вероятно, Qt5.15). Что работает, так это установить границу (которая может быть нулевой для вашей таблицы стилей):
QToolBar {
background-color: palette(base);
border-width: 0px;
}
background-color
сам по себе, похоже, не гарантирует, что он перекрашен.