Text auf Cursor-Position anzeigen

Alles rund um die Programmierung mit Qt
Antworten
raven-worx
Beiträge: 33
Registriert: 11. September 2007 19:34

Text auf Cursor-Position anzeigen

Beitrag von raven-worx »

Hi,

wie kann ich einen Text oder QLabel auf der derzeitigen Position anzeigen? Also wie einen Tooltip, der ständig auf der Position des Mauszeigers ist.

danke.
mfg
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

Beitrag von 24dan »

QWidget ohne Rand mit transparentem Hintergrund + einem QLabel
[???]
Dann einen Button bauen oder irgendwas anderes verwenden das auf Mouse Events reagieren kann.
[/???] <- Blödsinn Äh habe nicht richtig gelesen

Eintritt: SelfMadeToolTip an
Austritt: --"-- aus

Problem:
1. keine Ahnung wie man den Rand weg
2. und die Transparents hinbekommt? hier mal nachfragen: http://qtforum.de/forum/viewtopic.php?t=10466
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
MiKla
Beiträge: 134
Registriert: 29. Juli 2007 15:29

Beitrag von MiKla »

Ich würde mal in den qwt Quellen nach schauen. Da gibt es eine "QwtPlotPicker", die macht glaube ich genau sowas.

Michael
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

geht es darum, in deiner anwendung etwas an den mauszeiger zu kleben, oder ausserhalb deiner fenster (sprich auch auf dem desktop oder wenn andere anwendungen den focus haben)?

mfg,
julian
raven-worx
Beiträge: 33
Registriert: 11. September 2007 19:34

Beitrag von raven-worx »

Hi,

es sollte eine Art Tool-Tip sein. Braucht auch nicht transparent und ohne Rand sein.
Die Event-Methode (dragMoveEvent) hab ich schon, ich weiß nur nicht wie genau man nun den Text auf der Cursor-Position anzeigt.

mfg
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

Beitrag von 24dan »

ähhh...
habe ich dich falsch verstanden?

Mouse oder Cursor Position holen: int QMouseEvent::globalX () const
oder int cursorPosition () const und als nächstes diese Pos an dein Widget + Qlabel übergeben?
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
raven-worx
Beiträge: 33
Registriert: 11. September 2007 19:34

Beitrag von raven-worx »

habe zufällig gerade die QToolTip-Klasse gefunden. Mein Code sieht wie folgt aus. Bei gehaltenem Drag über dem Widget soll ein Tooltip angezeigt werden:
void Namespace::dragMoveEvent ( QDragMoveEvent * event ) {
QToolTip::hideText(); // da bei selben text die position nicht verändert wird
QToolTip::showText( QCursor::pos(),"ToolTip Text", this );
};

void Namespace::dragLeaveEvent( QDragLeaveEvent * event ) {
QToolTip::hideText();
};
Dies liefert allerdings kein befriedigendes Ergebnis, da der ToolTip nicht sehr zuverlässig angezeigt wird, und beim Bewegen der Maus verschwiendet und wiederkommt.
Ich denke das liegt daran, dass dragLeaveEvent auch aufgerufen wird, wenn über Widgets gefahren wird, die innerhalb dieses Widgets dargestellt werden? Wenn ja, was kann ich dagegen tun?

danke.
mfg
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

Beitrag von 24dan »

hi, noch wach???

also unter LabView hatte ich dafür immer das MouseEintritts Event benutzt das garantiert dir eine längere Anzeige deines QLabel und das darf dann aber erst "aktiv" sein wenn ein DragEvent gesndet wurde.

Wenn ein MouseAustritt woraus auch immer? statt fand einfach sehen ob schon ein DropEvent stattgefunden hat wenn auch das Ja = QLabel aus.

Sorry Qlabel = QtoolTip hideText().
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
raven-worx
Beiträge: 33
Registriert: 11. September 2007 19:34

Beitrag von raven-worx »

24dan hat geschrieben:hi, noch wach???
ja. :)
24dan hat geschrieben: also unter LabView hatte ich dafür immer das MouseEintritts Event benutzt das garantiert dir eine längere Anzeige deines QLabel und das darf dann aber erst "aktiv" sein wenn ein DragEvent gesndet wurde.
Konnte keine Methode für MouseEnter finden?
24dan hat geschrieben: Wenn ein MouseAustritt woraus auch immer? statt fand einfach sehen ob schon ein DropEvent stattgefunden hat wenn auch das Ja = QLabel aus.
Das hätte aber auch den Effekt, wenn ich nur kurz mit einem Drag in das Widget fahre und das Widget wieder verlasse, wird mir das Label nicht mehr deaktiviert und bleibt angezeigt, bis zum nächsten Drop-Versuch.
Gibt es keine elegante Lösung, den Drag-n-Drop Bereich auch auf die Kinder zu übertragen, bzw. diese nicht stören zu lassen?

mfg
Antworten