Seite 1 von 1

In QMenuBar existierende Einträge suchen

Verfasst: 4. September 2008 17:25
von flo_weitweg
Hallo!

Meine App. ist aus vielen Plugins aufgebaut die am Anfang geladen werden. Für jedes Plugin wird ein QMenu in der MenuBar angelegt. Nun würde ich aber bei gleichen QMenu's das bereits vorhandene nutzen - leider klappt das nicht! Folgendes hab ich probiert:

Code: Alles auswählen

m_theMenu = ui.menuBar->findChild< QMenu * >( plugin->getMenuString() );
if( !m_theMenu )
    m_theMenu = new QMenu( sfp->getMenuString() );
    
ui.menuBar->addMenu( m_theMenu );
Hat jemand eine Idee!

Danke
flo_weitweg

Verfasst: 5. September 2008 07:09
von macman
Text des Menüs != Name des Menüs. Damit die Menüs mit findChild gefunden werden können, musst Du ihnen mit setObjectName(...) den entsprechenden Namen geben.

Verfasst: 5. September 2008 10:54
von flo_weitweg
Hallo macman!

Danke für den Tipp! Das hat schon mal was gebracht, leider aber noch nicht den Erfolg ...
Folgende Implemntierung hab ich und weiß nicht warum es nicht geht:

Code: Alles auswählen

qstrMenu = plugin->getMenuString(); 
m_theMenu = ui.menuBar->findChild< QMenu * >( qstrMenu );
if( !m_theMenu )
{
    m_theMenu = new QMenu( qstrMenu );
    m_theMenu->setObjectName( qstrMenu );
    ui.menuBar->addMenu( m_theMenu );
}
Qt findet nie das child!
Vllt hast du noch eine Idee?

Danke
Flo

Verfasst: 5. September 2008 12:35
von macman
Außer debuggen? Das würde ich jetzt machen, alle Children holen, manuell mal durch gehen und die Strings vergleichen. Eventuell hat der Menüname Leerzeichen, die beim Objektnamen abgeschnitten werden oder etwas in der Art.

Verfasst: 8. September 2008 16:40
von FaS
Ich glaub ich würde ein QHash<QString, QMenu*> benutzen.

MfG,
FaS