Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » KDevelop / Qt / wxWidget » QkeyPressEvent?? [Noobie]

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.02.2005, 13:47 Uhr
~Miri
Gast


Hi , ich bin neu bei Qt und will meine beiden (unten erstellten) Start/Stop Buttons mit den tastaturpfeiltasten verbinden. So genau konnte mir das bisher leider keiner sagen, also versuch ichs nochmal hier.


Code:
      // Stop-Button fuer die Diashow
      timerstop =  myFactory->createButton(tr("Stop"), buttonbox, "viewwidget_timerstop");
      timerstop -> setToggleButton(TRUE);

      // Start- und Stop-Button verbinden (wie Radiobuttons)
      QButtonGroup *startstop = new QButtonGroup(displayWidget);
      startstop->insert(timerstop);
      startstop->insert(timerstart);
      startstop->setExclusive(TRUE);
      startstop->hide();

      /* Diashow initialisieren und starten */
      DiashowTimer * diashowtimer = new DiashowTimer(Config::instance()->DiashowInterval(),
      displayWidget, "diashowtimer");
      diashowtimer->resume();
      QObject::connect(diashowtimer, SIGNAL(timeout()), display, SLOT(showNext()));
      QObject::connect(timerstart, SIGNAL(clicked()), diashowtimer, SLOT(resume()));
      QObject::connect(timerstop, SIGNAL(clicked()), diashowtimer, SLOT(stop()));
      QObject::connect(prev, SIGNAL(clicked()), diashowtimer, SLOT(resetIfActive()));
      QObject::connect(next, SIGNAL(clicked()), diashowtimer, SLOT(resetIfActive()));



Danke im vorraus allen die mir helfen wollen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.02.2005, 12:37 Uhr
typecast
aka loddab
(Operator)


Als erstes solltest du dir zwei extra Signale in deinem Widget deklarieren.


C++:
signals:
   void left();
   void right();



Diese musst du dann mit den Slots resume und stop verknuepfen und anschliessend ein Event in deiner Widgetklasse ueberschreiben. Wenn du willst, dass es weitergeht, sobald der User die Taste runterdrueckt, kannst du das keyPressEvent ueberschreiben:


C++:
// Ich hatte leider keine Zeit zum testen. Ich hoffe aber, dass es tut :)

void QMyWidget::keyPressEvent ( QKeyEvent * e ) {
  // ueberpruefen, ob die linke Pfeiltaste gedrueckt wurde
  if (e->key() & Qt::Key::Left) {
      emit left();
      // angeben, dass dieser Tastendruck schon behandelt wurde
      e->accept();
      return;
  }
  if (e->key() & Qt::Key::Right) {
     emit right();
     e->accept();
     return;
  }
  
  // dieses Widget konnte den Tastendruck nicht behandeln. Jetzt sollen sich die Elternklassen darum kuemmern
  e->ignore();
}


--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ KDevelop / Qt / wxWidget ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: