Seite 1 von 1

[gelöst] Menüpunkte deaktivieren

Verfasst: 15. Oktober 2007 13:02
von bw1faeh0
Hallo Leute,

ich möchte Menüpunkte bei Bedarf deaktivieren.

Als erstes erzeuge ich mir die entsprechenden Actions:

Code: Alles auswählen

    startAllViewsAct = new QAction(tr("Alle Views starten"), this);
    startAllViewsAct->setStatusTip(tr("Startet die Logging-Funktion auf allen Views"));
    connect(startAllViewsAct, SIGNAL(triggered()), this, SLOT(startAllViews));

    stopAllViewsAct = new QAction (tr("Alle Views stoppen"), this);
    stopAllViewsAct->setStatusTip(tr("Stoppt die Logging-Funktion auf allen Views"));
    stopAllViewsAct->setEnabled(false);
    connect(stopAllViewsAct, SIGNAL(triggered()), this, SLOT(stopAllViews));

Hier habe ich bereits ein Menüpunkt deaktiviert, da desse Funktion zum Startzeitpunkt der Anwendung keinen Sinn ergibt.

Anschließend erzeuge ich das Menü aus meinen verschiedenen Acts:

Code: Alles auswählen

     fileMenu = menuBar()->addMenu(tr("&Datei"));
      fileMenu->addAction(saveLogAct);            
      fileMenu->addAction(exitAct);

      functionMenu = menuBar()->addMenu(tr("F&unktion"));
      functionMenu->addAction(startAllViewsAct);
      functionMenu->addAction(stopAllViewsAct);
Klappt bis hier her alles wunderbar.

Nun noch die betreffenden Slots implementieren:

Code: Alles auswählen

void fmbMonitor::startAllViews()
{
    startAllViewsAct->setEnabled(false);
    stopAllViewsAct->setEnabled(true);
}

void fmbMonitor::stopAllViews()
{
    stopAllViewsAct->setEnabled(false);
    startAllViewsAct->setEnabled(true);
}
Hier hört es dann leider auf. Die Slots zeigen nicht die geünschte Aktion...

Kann mir jemand einen Tipp geben?


mfg

Christian

Verfasst: 15. Oktober 2007 13:19
von CaptnChaos
was machen sie denn?*blöd frag*

Verfasst: 15. Oktober 2007 13:25
von bw1faeh0
Also die beiden Menüpunkte sollen sich im ersten Schritt nur gegenseitig aktivieren, bzw. deaktivieren.

Ein Klick auf "Alle Views starten" soll "Alle Views starten" deaktivieren (ausgrauen) und "Alle Views stoppen" aktivieren (ausgrauen deaktivieren).

Ein Klick auf "Alle Views stoppen" soll "Alle Views stoppen" deaktivieren (ausgrauen) und "Alle Views starten" wieder klickbar machen.

Verfasst: 15. Oktober 2007 13:33
von CaptnChaos
ja ne is klar aber was passiert denn jetzt bei dir?

Verfasst: 15. Oktober 2007 13:34
von CaptnChaos
connect(stopAllViewsAct, SIGNAL(triggered()), this, SLOT(stopAllViews));
() vergessen beim slot, wohl?

Verfasst: 15. Oktober 2007 13:38
von MichaelS
Moin,

die connect-Befehle sind nicht korrekt.

So müsste es aussehen:

Code: Alles auswählen

connect(stopAllViewsAct, SIGNAL(triggered()), this, SLOT(stopAllViews()));
Ein Blick auf die Ausgaben in der Konsole sollten helfen, solche Fehler zu vermeiden.

Gruß Michael

Verfasst: 15. Oktober 2007 13:39
von CaptnChaos
HA! schneller!

Verfasst: 15. Oktober 2007 13:46
von bw1faeh0
kopf->tischkante

Danke!

Aber kompilieren tut er es ganz brav... bekomme da leider keine warnungen oder Fehler... :(

Ok, trotzdem danke!!

Verfasst: 15. Oktober 2007 13:50
von CaptnChaos
ne das spuckt er auch nur im cerr aus.
Wenn du das mit konsolenunterstützung compilierst und das dann auch in der Konsole startest spuckt der das aus.