Seite 1 von 1

Färben eines Pushbuttons

Verfasst: 24. Januar 2007 14:45
von mostrich
Hallo,

momentan steh ich auf dem Schlauch.
Folgendes Problem:

Ich habe eine Buttongroup (exclusive) mit mehreren Pushbuttons (als ToggleButtons):

Code: Alles auswählen

buttonBox->setColumnLayout( 5, QWidget::Horizontal );
buttonBox->setAlignment( Qt::AlignLeft );
buttonBox->setExclusive(TRUE);
buttonBox->setBackgroundMode( Qt::PaletteButton );
c=0;
for (QStringList::Iterator it = butList.begin(); it != butList.end(); ++it )
{
  but = new QPushButton( *it, buttonBox );
  but->setToggleButton( TRUE ); 
  but->setHidden( FALSE );
  buttonBox->insert( but, c );
  c++;
}
connect( buttonBox, SIGNAL(pressed(int)), this, SLOT(buttonPressed(int)));
Wird ein Pushbutton gedrückt, wird das Signal clicked mit der Id des Buttons gesendet.
Das Signal wird in einem entsprechenden Slot empfangen. Dort
wiederrum wird eine Routine/Prozess gestartet und der Button soll gefärbt werden:

Code: Alles auswählen

void buttonPressed( int id )
{
   QButton *but;

   but = buttonBox->find(id);
   if ( but->text() == "Bla" )
   {
      if ( running( but->text() == 0 )
      {
          QPalette p = but->palette();
          p.setColor(QColorGroup::Button, color);
          but->setPalette(p);
          but->repaint(); 
      }
   }
}
Leider sieht man die Färbung nicht, weil der Button aktiviert ( isOn = TRUE ) ist.
Frage: Wie bekomme ich das hin, das der Button auch im aktiven Zustand bunt ist?

Ich benutze Qt 3.3.4 unter SuSE Linux 9.3.

Wolfgang

Verfasst: 25. Januar 2007 09:49
von Flachkoepper
Am einfachsten würde es wahrscheinlich gehen, wenn du deinem Button ne komplett neue Palette, basierend auf der gewünschten Farbe, zuweist. Dies hat den Vorteil, dass, wenn z.B. die Hintergrundfarbe deines Buttons auf einmal schwarz ist, die Schriftfarbe automatisch hell dargestellt wird.

Code: Alles auswählen

QColor c(Qt::red);
button->setPalette( QPalette(c) );