Qt Qmenu addMenu返回派生类对象
我有一个从QMenu派生的类,但我无法返回派生类对象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
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
,它永远不会被降级为其他任何内容。