PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu QComboBox



TheDodger
18-03-2002, 14:40
Hat jemand mal eine Idee, wie in einer QComboBox das genutzte QLineEdit gegen eine eigene Version eines Edit-Widgets austauschen kann, ohne gleich eine komplett neue ComboBox zu programmieren?

Oder wie ich einer QComboBox den Focus entziehen kann ... währe auch reichlich hilfreich ...

anda_skoa
18-03-2002, 15:53
Original geschrieben von TheDodger
Hat jemand mal eine Idee, wie in einer QComboBox das genutzte QLineEdit gegen eine eigene Version eines Edit-Widgets austauschen kann, ohne gleich eine komplett neue ComboBox zu programmieren?


Vielleicht durch ableiten von QComboBox.
Kann natürlich sein, dass der LineEdit private ist.



Oder wie ich einer QComboBox den Focus entziehen kann ... währe auch reichlich hilfreich ...

QWidget::clearFocus()
Eventuell zusätzlich FocusPolicy of NoFocus setzten, oder eine FocusProxy installieren, der dann alle Keyevents bekommt.

Ciao,
_

TheDodger
18-03-2002, 16:09
Original geschrieben von anda_skoa


Vielleicht durch ableiten von QComboBox.
Kann natürlich sein, dass der LineEdit private ist.

ist natürlcih private :/


QWidget::clearFocus()
Eventuell zusätzlich FocusPolicy of NoFocus setzten, oder eine FocusProxy installieren, der dann alle Keyevents bekommt.

Das Problem hierbei ist, das QComboBox definitiv keinen Focus erhält, sondern das QLineEdit, welches Bestandteil ist.
Somit bringt ein setzen der FocusPolicy nüx ... hab ich auch schon probiert.
Mal schauen, ob ich mir ein eigenes 'zimmern' kann ...

anda_skoa
19-03-2002, 11:24
Du kannst ja auch den FocusProcy auf den ineEdit setzten, bzw. dessen clearFocus aufrufen, oder?

Ciao,
_

TheDodger
19-03-2002, 16:53
Nein, geht nicht.
Das benutzte QLineEdit ist private und ich habe somit keinerlei Zugriffsmöglichkeiten darauf.

niktequik
19-03-2002, 17:29
Moin,
hab bis jetzt gar keine Ahnung von C++, aber wäre es nicht möglich eine Klasse abzuleiten und dieser eine Methode beizufügen, mit der man indirekt auf das private QLineEdit zugreifen kann?


Nikolas

anda_skoa
19-03-2002, 19:12
Original geschrieben von TheDodger
Nein, geht nicht.
Das benutzte QLineEdit ist private und ich habe somit keinerlei Zugriffsmöglichkeiten darauf.
:confused:
http://doc.trolltech.com/3.0/qcombobox.html#lineEdit



QLineEdit* lineEdit = comboBox->lineEdit();
lineEdit->setFocusPolicy(QWidget::NoFocus);


Ciao,
_

anda_skoa
19-03-2002, 19:15
Original geschrieben von niktequik
Moin,
hab bis jetzt gar keine Ahnung von C++, aber wäre es nicht möglich eine Klasse abzuleiten und dieser eine Methode beizufügen, mit der man indirekt auf das private QLineEdit zugreifen kann?


Die Idee ist ansich nicht schlecht.
Das Problem ist, dass privet bedeutet, dass nur die eine Klasse (oder eine als friend deklarierte) auf diese Membervariable direkten Zugriff haben.

Anders würde es aussehen, wenn sie als protected deklariert wäre, dann hätte man in einer abgeleiteten Klasse vollen Zugriff darauf.

Ciao,
_

micha
19-03-2002, 20:27
Die Klasse in QComboBox als friend deklarieren, und QT neu kompilieren.... :rolleyes:

Gruß micha

tkortkamp
19-03-2002, 21:02
Datei mit Deklaration+Implentierung kopieren und anpassen :D

c ya,
Tobias

TheDodger
20-03-2002, 04:44
Original geschrieben von micha
Die Klasse in QComboBox als friend deklarieren, und QT neu kompilieren.... :rolleyes:

Gruß micha

:D
Und somit ist die Portabilität == NULL

TheDodger
20-03-2002, 04:50
Original geschrieben von anda_skoa

:confused:
http://doc.trolltech.com/3.0/qcombobox.html#lineEdit



QLineEdit* lineEdit = comboBox->lineEdit();
lineEdit->setFocusPolicy(QWidget::NoFocus);



Das sieht doch schon mal fein aus ...

Allerdings gefällt mir das hier nicht :

Only editable listboxes have a line editor.
Was ist jetzt mit RO-QComboBox'en?

anda_skoa
20-03-2002, 09:11
Hmm, die haben dann wahrscheinlich nur den ListView.
Ich dachte bisher immer, die verwenden immer einen LineEdit. Nur halt einem auf read-only gesetzt.
Vielleicht gilt das auch für Qt2.

Aber wenn es keinen verwendet, dann kann der auch keien Focus haben, oder?

Ciao,
_