Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt Qmenu addMenu返回派生类对象_Qt_Qt4 - Fatal编程技术网

Qt Qmenu addMenu返回派生类对象

Qt Qmenu addMenu返回派生类对象,qt,qt4,Qt,Qt4,我有一个从QMenu派生的类,但我无法返回派生类对象 myMenu * editMenu = new myMenu(); // myMenu is derived from QMenu myMenu *preferenceMenu = new myMenu(); preferenceMenu = editMenu->addMenu(tr("&Preferences")); // this shows error QMenu *preferenceMenu = new QMenu

我有一个从QMenu派生的类,但我无法返回派生类对象

myMenu * editMenu = new myMenu(); // myMenu is derived from QMenu
myMenu *preferenceMenu = new myMenu();
preferenceMenu  = editMenu->addMenu(tr("&Preferences")); // this shows error

QMenu *preferenceMenu = new QMenu();
preferenceMenu  = editMenu->addMenu(tr("&Preferences")); // this works fine
返回指向
QMenu
的指针

QMenu *QMenu::addMenu(const QString &title);
因此,隐式向下转换到
myMenu*
将在以下情况下失败

myMenu *preferenceMenu = editMenu->addMenu(tr("&Preferences"));
如果要添加自定义类型的子菜单,请使用提供该功能的

auto *preferences_menu = new myMenu(tr("&Preferences");
editMenu->addMenu(preferences_menu);

如何向下转换并将QString设置为QMenu如果您希望“首选项”菜单是
myMenu
而不是简单的
QMenu
,那么您需要使用我显示的方法。为什么这对你不起作用?您尝试使用的方法将始终创建一个普通的
QMenu
,它永远不会被降级为其他任何内容。