QWidget 在另一个小部件上

Posted

技术标签:

【中文标题】QWidget 在另一个小部件上【英文标题】:QWidget over another widget 【发布时间】:2018-04-21 14:18:35 【问题描述】:

我有使用分隔符 (QSplitter) 垂直排列的图表 (QCustomPlot)。

点击右键如何获得如图所示的窗口?我知道如何处理右键信号,但我不明白如何显示我需要的窗口。

【问题讨论】:

【参考方案1】:

将 QMenu 添加为小部件的成员。在.h:

#include <QMenu>
#include <QAction>
.....
QMenu menu;

在构造函数中:

QAction* action=new QAction("save",this);
connect(action,SIGNAL(triggered()),this,SLOT(save()));
menu.addAction(action);
QAction* action2=new QAction("clear",this);
connect(action2,SIGNAL(triggered()),this,SLOT(clear()));
menu.addAction(action2);
setContextMenu(&menu);

【讨论】:

哇!正是需要的。谢谢!但是,我不明白最后一个函数setContextMenu(&amp;menu); 是干什么用的,我也不明白。我这样说menu.exec(event-&gt;globalPos()); 这个函数为这个小部件设置了一个上下文菜单,所以可以通过点击鼠标右键来调用它。

以上是关于QWidget 在另一个小部件上的主要内容,如果未能解决你的问题,请参考以下文章

QWidget.paintevent() 与 QLabel.setPixmap()

如何从另一个 Qwidget 中删除小部件?

当小部件集更改时,调整 QWidget 的大小以仅保存当前小部件

如何将小部件放入空的 QWidget 中? [关闭]

在 QWidget 上绘画以覆盖整个小部件

使用按钮 PyQt5 打开一个小部件