[gelöst] Menüpunkte deaktivieren

Alles rund um die Programmierung mit Qt
Antworten
bw1faeh0
Beiträge: 94
Registriert: 10. Oktober 2007 14:48
Wohnort: Braunschweig

[gelöst] Menüpunkte deaktivieren

Beitrag 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
Zuletzt geändert von bw1faeh0 am 15. Oktober 2007 13:46, insgesamt 1-mal geändert.
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

was machen sie denn?*blöd frag*
bw1faeh0
Beiträge: 94
Registriert: 10. Oktober 2007 14:48
Wohnort: Braunschweig

Beitrag 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.
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

ja ne is klar aber was passiert denn jetzt bei dir?
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

connect(stopAllViewsAct, SIGNAL(triggered()), this, SLOT(stopAllViews));
() vergessen beim slot, wohl?
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Beitrag 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
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

HA! schneller!
bw1faeh0
Beiträge: 94
Registriert: 10. Oktober 2007 14:48
Wohnort: Braunschweig

Beitrag von bw1faeh0 »

kopf->tischkante

Danke!

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

Ok, trotzdem danke!!
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag 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.
Antworten