最近,做了一个小程序,使用到了QToolBox这个控件,在使用过程中需要在QToolBox的分组项上增加右键菜单,
但是查了一下QToolBox的说明,只有左键单击的时候,有void currentChanged(int index)这个信号发出当前选中组的索引,
没有右键点击发出选中组的索引信号。那我们如何才能找到这个点击右键时,获取到当前组的索引呢?
1、在QToolBox的基类QWidget中,有一个虚函数contextMenuEvent(QContextMenuEvent *e),通过测试发现,在右键点击组按钮的时候,能够收到这个消息,恩,有希望了!接下来我们就要看,能否通过这个消息来获取到这个组的相关信息呢?
2、在这个虚函数contextMenuEvent(QContextMenuEvent *e)中增加测试代码:
QWidget *pWidget = childAt(e->x(), e->y());
qDebug() << pWidget;
输出的结果为QToolBoxButton(0x29cc560, name="qt_toolbox_toolboxbutton")
哦,原来这个按钮是类QToolBoxButton的对象。
3、在QT的说明里搜索QToolBoxButton,结果一无所有,什么也没查到。看样子这个类应该是QT内部使用的了。
4、不让直接使用这个类,那该咋办啊? 既然你是Button,应该与QAbstractButton有关系吧,那就强转一下试试: