Forum: PC-Programmierung Visual Studio 2008 mit QT Designer


von Maxim (Gast)


Lesenswert?

Hallo alle Zusammen,

Programmierung unter: Visual Studio 2008 + QT


Ich habe folgenden Problem.

Ich habe eine GUI mit QT Designer erstellt.

In dem GUI steht mehrere Button, die ja nach Funktionalität enabled oder 
desabled sind.

Es tritt einen Effeckt, der ich nicht verstanden habe und zwar wenn ich 
z.B einen Button als Enabled habe und die andere Button als desabled 
(enabled = false) habe wirken, ob sie blincken.

Meine Frage ist:
Wie kann ich diese Effeckt aufhebe?

Danke in Voraus

von Rolf Magnus (Gast)


Lesenswert?

Ich vermute einen Fehler im Programm, denn normalerweise gibt es so 
einen Effekt nicht. Kannst du mal ein minimales, aber komplettes 
Programm zeigen, das den Fehler hat?

von Maxim (Gast)


Lesenswert?

meine vorgehen ist wie folgenden:

void MainWindow::showOperationStarted(const A &a_)
{
  switch(a_.code())
  {

    case B::Measure:
      {
        ui.bruttoNettoButton->setEnabled(false);
        ui.calibrateButton->setEnabled(false);
        ui.pushButtonAngle->setEnabled(false);
      }
      break;

    case B::AngleMeasure:
      {
        ui.bruttoNettoButton->setEnabled(false);
        ui.calibrateButton->setEnabled(false);
        ui.measureButton->setEnabled(false);
      }
      break;

  }

  showOperationStarted(true);
}
oder muss ich mir auf was andres achten?

von Εrnst B. (ernst)


Lesenswert?

Hast du irgendeine Zirkuläre Abhängigkeit da drinnen?
Beim Disablen eines Buttons löst dieser ein Signal aus, dass (über 
Umwege) dazu führt, dass die gezeigte Funktion nochmal aufgerufen wird, 
und den Button wieder enabled, usw?

von Maxim (Gast)


Lesenswert?

ja das habe ich

von Maxim (Gast)


Lesenswert?

Fehler ist gefunden.
1000000 Dank für den Hinweis und ist genau was " Εrnst B✶" gesagt hat.

von Rolf Magnus (Gast)


Lesenswert?

Um solche zirkulären Abhängigkeiten wegzubekommen, gibt's übrigens 
blockSignals(). Damit kann man temporär alle ankommenden Signale 
ignorieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.