如何让QToolButton超越QToolbar的边缘?

How to make QToolButton go beyond the edge of QToolbar?

如何让按钮超出QToolbar的边缘?

下面是我创建工具栏的代码:

mainwindow.h

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    MainWindow(QWidget *parent = 0)

private:
    QToolBar* _toolBar;
};

mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
   _toolBar = new QToolBar;
   QAction *actionAdd = new QAction(QIcon(":/images/add.png"), "", this);
   _toolBar->addAction(actionAdd);

    addToolBar(Qt::ToolBarArea::TopToolBarArea, _toolBar);

}

style.qss

QToolBar {
    background: #018ac4;
    height: 150px;

}

小部件不可能。 A QWidget 不能在其区域外绘画。看到这个答案:.

但是,QToolBar 并不是 QAction 的真正父级,因为 addAction(QAction *action) 没有取得所有权。所以也许 QMainWindow 可以按照你想要的方式绘制你的 QAction 但据我所知,这无法通过 Qt 的 public API 实现。

你可以做的是使用 QML(但你需要对整个 window 使用 QML)。

如前所述,使用 QtWidgets 无法正确解决此问题。 但是我看到了两个选项来直观地创建这种效果:

  1. 将按钮从工具栏中移出并将其添加到主 window 中,但不要将其添加到布局中。通常我会说在调整大小事件中重新定位它,但由于它位于左上角,所以您最好在启动时调用一次 setGeometry(),以后不用担心。您可能必须最后添加,或者尽管调用 rise()

  2. 让按钮看起来像伸出来的,但实际上并没有。使工具栏与按钮一样大,但将工具栏的下部涂成更亮的蓝色,使其看起来像是下方小部件的一部分。