如何让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 无法正确解决此问题。
但是我看到了两个选项来直观地创建这种效果:
将按钮从工具栏中移出并将其添加到主 window 中,但不要将其添加到布局中。通常我会说在调整大小事件中重新定位它,但由于它位于左上角,所以您最好在启动时调用一次 setGeometry()
,以后不用担心。您可能必须最后添加,或者尽管调用 rise()
。
让按钮看起来像伸出来的,但实际上并没有。使工具栏与按钮一样大,但将工具栏的下部涂成更亮的蓝色,使其看起来像是下方小部件的一部分。
如何让按钮超出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 无法正确解决此问题。 但是我看到了两个选项来直观地创建这种效果:
将按钮从工具栏中移出并将其添加到主 window 中,但不要将其添加到布局中。通常我会说在调整大小事件中重新定位它,但由于它位于左上角,所以您最好在启动时调用一次
setGeometry()
,以后不用担心。您可能必须最后添加,或者尽管调用rise()
。让按钮看起来像伸出来的,但实际上并没有。使工具栏与按钮一样大,但将工具栏的下部涂成更亮的蓝色,使其看起来像是下方小部件的一部分。