从OS X中的QToolBar中删除渐变

时间:2014-01-26 12:31:25

标签: macos qt gradient qtstylesheets qtoolbar

我正在Qt中编写一个使用QToolBar元素的应用程序。在Linux和Windows中,一切看起来都不错。但在OS X中,QToolBar具有可怕的渐变作为其背景。请建议我,我该如何删除它?

UPD。:我正在使用Qt 5.2。

4 个答案:

答案 0 :(得分:0)

你试过QStyleSheets吗?

http://qt-project.org/doc/qt-5/stylesheet-examples.html#customizing-qstatusbar

http://qt-project.org/doc/qt-5/stylesheet-reference.html#background-prop

QStatusBar * bar;
bar = new QStatusBar;
bar->setStyleSheet("background: transparent;");
// bar->setStyleSheet("background: none;");
// bar->setStyleSheet("background: white;");
bar->showMessage("StatusBar");

或者,如果您在QMainWindow的上下文中使用它,它可能看起来像:

this->statusBar()->setStyleSheet( //...

希望有所帮助。

答案 1 :(得分:0)

使用QStyleSheet的方法是正确的。另一种方法是将带有setStyle的QWindowsStyle对象应用于QToolBar。 QWindowsStyle在每个平台上都具有简单和标准的外观。我希望在所有平台上看起来和感觉完全相同,即使在win / mac / unx上有不同的外观和感觉,我也会使用它。

答案 2 :(得分:0)

似乎工具栏完全忽略了Mac上的styleSheets(至少在Qt 5.2.1中)。我能够使用样式删除渐变,例如使用Windows样式。工具栏按钮不受影响。

toolBar->setStyle(QStyleFactory::create("windows"));

答案 3 :(得分:0)

这也是 2020 年 Qt5.12(可能还有 Qt5.15)中的一个已知错误。有效的是设置边框(样式表的边框可能为零):

QToolBar {
    background-color: palette(base);
    border-width: 0px;
}

background-color 似乎并不能确保它重新粉刷。