Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : noch einmal QT ...



TheDodger
17-11-2001, 06:58
Es gibt einfach Dinge, die lassen keinen in Ruhe :)

Ich habe noch eine frage zu QT(2|3) ...

Ich möchte ein QLineEdit generell so erstellen, das unabhängig von der Fontart, -größe immer nur eine bestimmte Anzahl von Zeichen angezeigt wird.
Allerdings gibt es dafür keinerlei Property ... was könnte ich da denn überladen, damit ich so eine Funktion erhalte?

BTW, gibt es im Netz nicht irgendwo ein ordentliches Tuturial, wo geschrieben steht, wie man eigene Widgets erstellt? Möglichst ausführlich & gut geschrieben ... und für QT(2|3) ... die Online-Doku zu QT gibt in dieser Beziehung nicht allzuviel her ... leider.

anda_skoa
17-11-2001, 12:47
Im QtDesigner:
maxLength (direkt unter text)

Im C++ Code:
setMaxLength(int)

Zusammengesetzte Widget kann man leicht im QtDesigner machen.
Ansonsten eines der bestehenden widgets nehmen und einen Subklasse machen und Methoden überschreiben.

Wenn es sich in Layouts anpasses soll, muß man (IIRC) sizeHint() überschreiben.

Ciao,
_

TheDodger
18-11-2001, 09:10
Original geschrieben von anda_skoa
Im QtDesigner:
maxLength (direkt unter text)

Im C++ Code:
setMaxLength(int)


setzt die max. Breite ... richtig, ist aber vom Font abhängig.
nimm z.b. einen courier 8 und designer und zur laufzeit einen courier 11 und die breite stimmt nicht :D .... deswegen meine frage



Ansonsten eines der bestehenden widgets nehmen und einen Subklasse machen und Methoden überschreiben.


richtig, aber wo und wie?
ich habe sowas noch nie gemacht und wüsste jetzt auf anhieb (hee, ich bin grad aufgestanden ;) ) nicht mal wo ich anfangen sollte



Wenn es sich in Layouts anpasses soll, muß man (IIRC) sizeHint() überschreiben.

Ciao,
_

...

jgbauman
18-11-2001, 11:28
Als Starthilfe:
http://doc.trolltech.com/3.0/designer-manual-6.html
http://doc.trolltech.com/3.0/simple-qfont-demo-walkthrough.html

anda_skoa
18-11-2001, 11:37
Hmm, ich hab das nicht ausprobiert, in einem Programm mein ich.

Ich hab nur das Property im Designer geändert (auf 3) und dann im preview mode gesehen, dass er nicht mehr als 3 Zeichen zuläßt.

Wenn du es mal Probeweise in deinem Prog auf 3 setzt, kannst du dann abhängig von der Schriftgröße mehr Zeichen eingeben?

Welche Qt Version verwendest du?

Wegen den eigenen Widgets:
vielleicht hilft es dir nachzusehen, wie die KDE Entwickler das machen.
Du besorgst dir das kdelibs Quellen Paket. Dort sind im kdeui Vereichnis einige erweiterte Widgets.


Ciao,
_

TheDodger
18-11-2001, 15:39
Original geschrieben von anda_skoa
Hmm, ich hab das nicht ausprobiert, in einem Programm mein ich.

Ich hab nur das Property im Designer geändert (auf 3) und dann im preview mode gesehen, dass er nicht mehr als 3 Zeichen zuläßt.


richtig ... und bei einem größeren font lässte er immer noch 3 zeichen zu, aber es werden einfach zu wenig angezeigt (bei mir zu 2)



Wenn du es mal Probeweise in deinem Prog auf 3 setzt, kannst du dann abhängig von der Schriftgröße mehr Zeichen eingeben?


nein, natürlich nicht ... die zahl der zeichen, die ich eingeben kann bleibt natürlich gleich. ich möchte aber, das das feld generell so groß ist, daß nur diese anzahl angezeigt wird ... unabhängig vom font ... und das ist mir in keineinster weise gelungen, auch in den unmöglcihsten kombinationen der proporties nicht.



Welche Qt Version verwendest du?


QT3.0.0 (Windows & Linux)



Wegen den eigenen Widgets:
vielleicht hilft es dir nachzusehen, wie die KDE Entwickler das machen.
Du besorgst dir das kdelibs Quellen Paket. Dort sind im kdeui Vereichnis einige erweiterte Widgets.


danke, ich schau da morgen mal rein :)

anda_skoa
18-11-2001, 16:49
nein, natürlich nicht ... die zahl der zeichen, die ich eingeben kann bleibt natürlich gleich. ich möchte aber, das das feld generell so groß ist, daß nur diese anzahl angezeigt wird ... unabhängig vom font ... und das ist mir in keineinster weise gelungen, auch in den unmöglcihsten kombinationen der proporties nicht.


Ah, verstehe.
Dein erstes Posting hat sich für mich so gelesen, dass ich gemeint habe, du brauchts eine Möglichkeit die Anzahl der Zeichen einzuschränken.

Ich hab bisher noch nicht mit Qt3 gearbeitet, aber es könnte eventuell so gehen:
QLineEdit lineEdit = new QLineEdit();

QFontMetrics fontMetrics(lineEdit->font());
QSize size = fontMetrics.size(Qt::SingeLine, lineEdit->text());
lineEdit->setMinimumSize(size);

// nicht getestet ;-)

Ciao,
_