Qt5/C++ QMenu/QAction...i werd narrisch...
Geizhals » Forum » Programmierung » Qt5/C++ QMenu/QAction...i werd narrisch... (2 Beiträge, 173 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Qt5/C++ QMenu/QAction...i werd narrisch...
21.07.2014, 16:55:24
Hi fellow Coders!

Ich dreh bald durch mit dem QMenu/QAction System von Qt. Laut den Dokus soll das "Modell" so aussehen:
- QMenuBar
-- QMenu
---QMenu-->QAction (triggered Signal etc..)

Ich post mal den Code:


void MainWindow::refreshModels(void) {
    QMenu *parent = ui->menuModel_Operations;
    std::list<std::string>::iterator    pIT;
    HumanManager &oHM = HumanManager::getSingleton();
    QObjectList::iterator   qoIT;
    QRegExp qacRE("^models_");
    QList<QMenu*> foundEntries;
    QList<QMenu*>::iterator fEIT;

    // refresh resources
    oHM.refreshResources();

    // search "old" entries and remove them
    foundEntries = parent->findChildren<QMenu*>(qacRE, Qt::FindChildrenRecursively);

    for (fEIT = foundEntries.begin(); fEIT != foundEntries.end(); fEIT++) {
        QMenu *mVictim = *fEIT;
        QAction *aVictim = mVictim->menuAction();
        mVictim->removeAction(aVictim);
    }

    // rebuild Menuentries
    for (pIT = oHM.meshBegin(); pIT != oHM.meshEnd(); pIT++) {
        std::string mdName = *pIT;
        std::stringstream convert;

        if (mdName.length() > 1) {
            QAction *nwAction = parent->addAction(QString(mdName.data()));
            nwAction->setEnabled(TRUE);
            nwAction->setVisible(TRUE);
            nwAction->setObjectName(QString(convert.str().data()));
            nwAction->setParent(parent);
            connect(nwAction, SIGNAL(triggered()), this, SLOT(action_loadObj()) );
        }
    }
}


"ui->menuModel_Operations" ist das BasisMenu in das ich meine "QAction" Submenüs anhängen will.  Normalerweise würd ich mir da erwarten das Qt die "QActions" als SubMenüs zu meinem ersten Menüeintrag anhängt, tuts nicht.

So sieht das Menü aus:
http://666kb.com/i/cq9eyk1y7mp4ggp4o.jpg  (bitte klicken).

Wo ist da mein Fehler ? Ich habs jetzt auf mehrere Arten probiert - QAction anlegen, dann via parent->addAction(nwAction); - zusätzliches Menü anlegen und dem ein QAction hinzufügen ...

Auch lt. diversen Codesnippets mach ich alles richtig... ?-) (das removen ist nicht richtig, aber das ist mir bewußt |-D )

lg.


"Those who don't understand Unix are condemned to reinvent it, poorly." – Henry Spencer
[ Dieser Beitrag wurde inzwischen editiert. Die aktuelle Version befindet sich hier. ]
Antworten PM Alle Chronologisch
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung