5

工具栏如何在顶部栏中实现,例如,Tiled它完成了吗?

平铺 通常,工具栏如下所示:

在此处输入图像描述

示例代码目前的情况:

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr) {
        auto *tbar = new QToolBar();  
        tbar->addWidget(new QPushButton("Push Me"));
        this->addToolBar(tbar);
    }
};
4

4 回答 4

6

如果你还在使用 Qt 4.x,你可以只使用setUnifiedTitleAndToolBarOnMac(bool set)QMainWindow 中包含的函数:

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr) {
        auto *tbar = new QToolBar();  
        tbar->addWidget(new QPushButton("Push Me"));
        this->addToolBar(tbar);
        this->setUnifiedTitleAndToolBarOnMac(true); // activate Mac-style toolbar
    }
};

另见:https ://qt-project.org/doc/qt-4.8/qmainwindow.html#unifiedTitleAndToolBarOnMac-prop

于 2013-09-08T13:55:29.977 回答
5

如果您使用的是 Qt5,请查看QtMacExtras ( https://github.com/qt/qtmacextras )

您可以使用 QtMacExtras::setNativeToolBar 为您的 QToolBar 赋予原生 Mac 外观和感觉

于 2013-06-08T20:48:28.783 回答
1

如果您将 QMainWindow 和/或 QToolBar 子类化并更改它们加载/拥有的框架类型,您可能可以获得您想要的效果。

http://qt-project.org/doc/qt-4.8/qframe.html#details

http://qt-project.org/doc/qt-4.8/stylesheet-examples.html#customizing-qframe

http://qt-project.org/doc/qt-4.8/stylesheet-customizing.html#the-box-model

另一种可能实现此结果的方法,但有点hacky,您可以将另一个正确颜色的无框小部件放在正在显示的框架部分上。使用Qt:ToolandQt::WindowStaysOnTopHintQt::FramelessWindowHint,您应该能够让您的覆盖小部件隐藏关节。

希望有帮助。

于 2013-05-22T06:37:47.250 回答
0

您可以尝试使用样式表删除框架边框。

tbar->setStyleSheet("QToolBar { border: 0px }");
于 2013-05-30T13:58:47.513 回答