如何让QToolButton超越QToolbar的优势?

时间:2018-02-21 06:43:30

标签: qt qtstylesheets qtoolbar

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

enter image description here

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

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;

}

2 个答案:

答案 0 :(得分:2)

小部件无法实现。 QWidget无法在其区域外绘画。请参阅此答案:https://stackoverflow.com/a/48302076/6165833

但是,QToolBar并非真正QAction的父级,因为addAction(QAction *action)不接受所有权。所以也许QMainWindow可以按照你想要的方式绘制你的QAction,但是通过Qt的公共API无法实现AFAIK。

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

答案 1 :(得分:1)

如前所述,使用QtWidgets无法正确解决这个问题。 但是我看到了两种可视化创建效果的选项:

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

  2. 让它看起来像按钮突出,但它确实没有。使工具栏与按钮一样大,但将工具栏的下半部分绘制成更亮的蓝色,这样它看起来就像是它下面的小部件的一部分。