Seite 1 von 1

Frage zu stackedLayout und Cursorvergabe

Verfasst: 31. Mai 2009 09:30
von TK
Guten Morgen.

Zu 1.
1. ist ein QListWidget mit zwei Einträgen. Der erste Eintrag ist auf dem Bildausschnitt markiert. Ich habe den Cursor mit

Code: Alles auswählen

iList->setCursor(Qt::PointingHandCursor);
gesetzt. Doch der HandCursor erscheint schon, wenn ich nur auf die Liste zeige. Ich hätte es gerne, dass sich der Cursor nur verändert, wenn ich auf die Listeneinträge selbst zeige. Wie?

Zu 2.
2. ist ein QTextEdit. Wenn ich mit dem Mauszeiger über dieses Widget fahre soll sich der Cursor nicht verändern. Ich hätte gerne den standard arrow cursor. Mit

Code: Alles auswählen

iText->setCursor(Qt::ArrowCursor);
funktioniert es nicht.

Zu 3.
Der Bildausschnitt zeigt ein Dialog, welches in zwei Bereiche unterteilt ist. Beide Bereiche sind grau eingerahmt Der untere Bereich, an dem die Drei steht ist ein stackedLayout. Warum ist der graue Rahmen des stackedLayout in horizontaler Richtung etwas kleiner als der obere Rahmen? Ist das normal so?

Danke für Antworten.

Verfasst: 31. Mai 2009 09:53
von upsala
Ich würde mal hier ansetzen:

Code: Alles auswählen

void QLayout::setContentsMargins ( int left, int top, int right, int bottom )

Verfasst: 31. Mai 2009 13:33
von TK
By default, QLayout uses the values provided by the style. On most platforms, the margin is 11 pixels in all directions.
Aha, also ist bei nem stackedLayout der Rand defaultmäßig nicht 11 Pixel breit? Ist ja unschön. Somit muss ich bei beiden Bereichen über setContentsMargins(...) den Rand definieren?

Was gibt es zu 1. und 2. zu sagen?

Verfasst: 31. Mai 2009 13:37
von TK
Zur Info: ich rede da immer was von zwei Bereichen in dem Dialog. Also die zwei Bereiche, die ich da meine, sind zwei QGroupBox.

Habe es nun mal mit setContentsMargins probiert. Hier kann ich aber nur den Abstand der Widgets zur GroupBox verändern. Ich möchte aber den Abstand der GropBox zum Dialogrand verändern, sprich, beide GroupBoxen sollen zum Dialogrand den selben Abstand haben.

Geht das evtl mit QSizePolicy?

Verfasst: 31. Mai 2009 18:36
von TK
Zu 3.

habe festgestellt, das ist so, wenn stackedLayout verwendet wird.

Unter http://doc.trolltech.com/4.2/dialogs-configdialog.html ist es genauso

Jetzt müsste nur noch 1. und 2. geklärt werden. Weiß jemand wie?

Verfasst: 31. Mai 2009 19:31
von upsala
Bei 1. hilft nur ein überladen von QListWidget.
Bei 2. seh ich keinen Sinn darin.

Verfasst: 31. Mai 2009 20:23
von TK
Der Hintergedanke bei 2. ist:

Das QTextEdit benutze ich nur, und nur, für einen Informationstext.

Verfasst: 31. Mai 2009 20:37
von franzf
Das QTextEdit ist ein QAbstractScrollArea.
Es bringt dir wenig der SrollArea was zuzuweisen. Nimm stattdessen den viwport()

Code: Alles auswählen

edit->viewport()->setCursor(Qt::ArrowCursor);
Aber ein QTextEdit ist dafür da auch mal was daraus zu markieren und zu kopieren, und da ist IBeam schon besser. Aus Benutzersicht also besser den Cursor so lassen wie man ihn sich über einem TextEdit erhofft.

Verfasst: 31. Mai 2009 21:55
von TK
Danke für den Tipp. Schaue mal was geht

:D

... ja, mit viewport()... geht's, thx. Wenn das schon so gut klapp, franzf, kannst du mir noch einen Tipp geben, wie ich nur einen PointingHandCursor über den Listeneinträgen bekomme und nicht über der ganzen Liste. Okay, es viel, Methode überladen. Welche? Mit was?