如何让按钮超出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;
}
答案 0 :(得分:2)
小部件无法实现。 QWidget
无法在其区域外绘画。请参阅此答案:https://stackoverflow.com/a/48302076/6165833。
但是,QToolBar
并非真正QAction
的父级,因为addAction(QAction *action)
不接受所有权。所以也许QMainWindow
可以按照你想要的方式绘制你的QAction
,但是通过Qt的公共API无法实现AFAIK。
你可以做的是使用QML(但是你需要在整个窗口使用QML)。
答案 1 :(得分:1)
如前所述,使用QtWidgets无法正确解决这个问题。 但是我看到了两种可视化创建效果的选项:
从工具栏中取出按钮并将其添加到主窗口,但不要将其添加到布局中。通常我会说重新定位调整大小事件,但由于它位于左上角,你也可以在启动时调用setGeometry()
一次,以后不用担心。您可能需要添加最后一个,或者拨打rise()
。
让它看起来像按钮突出,但它确实没有。使工具栏与按钮一样大,但将工具栏的下半部分绘制成更亮的蓝色,这样它看起来就像是它下面的小部件的一部分。