2017-06-19 54 views
0

我這是從QMenu派生的類,但IA中號無法返回的派生類對象Qmenu addMenu回報派生類對象

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 

回答

1

QMenu::addMenu返回一個指向QMenu ...

QMenu *QMenu::addMenu(const QString &title); 

所以隱含低垂到myMenu *將在下面的失敗...

myMenu *preferenceMenu = editMenu->addMenu(tr("&Preferences")); 

如果你想添加自己的自定義的子菜單類型,然後使用提供了功能QMenu::addMenu overload ...

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

如何我沮喪的,如果你想在「首選項」菜單中的QString設置爲QMenu – Sijith

+0

成爲'myMenu'而不是簡單地'QMenu',那麼你需要使用我所展示的方法。爲什麼不能爲你工作?您嘗試使用的方法將始終創建一個簡單的'QMenu',它可以*永遠不會被貶低到其他任何東西。 –