qmenu基本用法_点击右键弹出QMenu的使用问题。

  • Post author:
  • Post category:其他


目前来看QMenu的使用存在这几个问题。

1、如果使用了临时变量的QMenu,并且没有指定父窗体,例如:

QMenu menuDemo;

menuDemo.addAction(“test”);

menuDemo.exec();

那么会存在一个问题,就是如果使用某个快捷键将QMenu所在的Widget给关闭掉,QMenu并不会随着消失,这样子在流程上就存在着问题。

2、如果使用了临时变量的QMenu,并且指定父窗体,例如:

QMenu menuDemo(this);

menuDemo.addAction(“test”);

menuDemo.exec();

那么会存在一个问题,就是如果使用某个快捷键将QMenu所在的Widget给关闭掉,QMenu的父窗体会delete一次QMenu,然后QMenu作为临时变量又会被delete一次,就会导致crash的问题。

3、如果使用了指针QMenu,并且没有指定父窗体,例如:

QMenu *menuDemo = new QMenu;

menuDemo->addAction(“test”);

menuDemo->exec();

那么情况将会和1一样,使用某个快捷键将QMenu所在的Widget关闭掉,QMenu不会随着消失,改变了原本的流程,并且因为使用了指针,还会造成内存泄露。

综上所述,所以在使用QMenu的时候一定要使用指针的QMenu, 并且需要明确指定他的父窗体。例如在Preview这个Widget右键弹出一个QMenu,就需要用如下的方式进行创建



版权声明:本文为weixin_39951930原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。