Qt4: QTextEdit focus

 ( pelz | 2008. április 19., szombat - 18:52 )

Sziasztok!

Qt4-ben készítek egy kis dialógus ablakot. A különböző címkéken (QLabel) kívül két objektum van az ablakban, egy LineEdit és egy TextEdit. A gondom csak annyi, hogy nem találok olyan signal függvényt, ami akkor jön meg, amikor a TextEdit-re kerül a fókusz. Valami ilyesmi nevű kellene, hogy "focused". De, fontos lenne, hogy csak abban a pillanatban, egyszer generálódjon a signal.

Az igazság az, hogy megoldottam a problémát, mert a QLineEdit osztálynak van egy editingFinished() nevű signal függvénye, ami akkor jön meg, ha a fókusz elmegy a LineEdit-ről. De én olyat szeretnék, ami a TextEdit fókuszba kerülésekor jön meg. Az én esetemben éppen egy olyan objektum van a TextEdit fókuszálása előtt, amely tud kibocsátani signal-t, ha lemegy róla a fókusz. De ez egy szerencsés helyzet, hogy tudnám megoldani, ha más objektum lenne ott?

Előre is köszönöm a hasznos segítségeteket!

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Én ezzel próbálnám, de lehet, hogy félreértettem a problémát:
(a QLineEdit a QWidget leszármazottja)

void QWidget::focusInEvent ( QFocusEvent * event ) [virtual protected]

This event handler can be reimplemented in a subclass to receive keyboard focus events (focus received) for the widget. The event is passed in the event parameter

A widget normally must setFocusPolicy() to something other than Qt::NoFocus in order to receive focus events. (Note that the application programmer can call setFocus() on any widget, even those that do not normally accept focus.)

The default implementation updates the widget (except for windows that do not specify a focusPolicy()).

See also focusOutEvent(), setFocusPolicy(), keyPressEvent(), keyReleaseEvent(), event(), and QFocusEvent.

Vagy ezzel:
void QApplication::focusChanged ( QWidget * old, QWidget * now ) [signal]

This signal is emitted when the widget that has keyboard focus changed from old to now, i.e. because the user pressed the tab-key, clicked into a widget or changed the active window. Note that both old and now can be the null-pointer.

Mondjuk ez akkor váltódik ki, ha mindkét widget megkapta az értesítést a fókuszváltozásról.
Illetve gázos, ha (több widget) -> (textedit) a kapcsolat. De ha csak arra kell, hogy lineedit->textedit váltáskor kiváltsa a signalt, akkor ez is megfelelhet.

--
A gyors gondolat többet ér, mint a gyors mozdulat.

Ezt írtam be:

void MyTextEdit::focusInEvent(QFocusEvent* event)
{
	QTextEdit::focusInEvent(event);
	MyProcedure();
}

Úgy látom működik.

Kipróbálom "f0xhu" javaslatát is.

Hálás köszönet! Üdv: Pelci.