Удалить градиент из 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сам по себе, похоже, не гарантирует, что он перекрашен.

Другие вопросы по тегам