2

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

在此处输入图像描述

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

主窗口.h

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

private:
    QToolBar* _toolBar;
};

主窗口.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);

}

样式.qss

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

}
4

2 回答 2

2

小部件是不可能的。AQWidget不能在其区域之外绘画。请参阅此答案:https ://stackoverflow.com/a/48302076/6165833 。

但是, theQToolBar并不是真正的父级,QAction因为addAction(QAction *action)它不拥有所有权。因此,也许QMainWindow可以按照您想要的方式绘制您QAction的图像,但 AFAIK 无法通过 Qt 的公共 API 实现。

您可以做的是使用 QML(但您需要在整个窗口中使用 QML)。

于 2018-02-21T08:05:59.833 回答
2

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

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

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

于 2018-02-22T07:40:50.513 回答