Hallo QExperts,
ich versuche meinen abgeleiteten QListViewItems einen WhatsThis Text anzuheften, der beim Anklicken im WhatsThis Modus eine Beschreibung anzeigt. Blöderweise ist QListViewItem kein QWidget, sodass die ganz einfache Methode schon mal wegfällt. Der Versuch, den Text bei activate() anzuzeigen, wenn der WhatsThis Modus aktiv ist, schlägt bei mir bislang fehl, weil ich nicht herausbekomme, wann dieser Modus aktiv ist. Selbst die Abfrage auf den WhatsThis-Cursor hilft nicht, da der bei activate() schon wieder zurückgesetzt wurde. Momentan behelfe ich mir mit der rechten Maustaste, doch das ist nur ein 'work around'. Hat jemand eine Idee?
Gruß, Stevie
QWhatsThis::add() für QListViewItems
-
- Beiträge: 300
- Registriert: 3. November 2004 16:15
- Wohnort: Berlin
Hallo Stevie
Ich reagiere für die Bubble Help (QToolTip) auf die Nachricht onItem(QListViewItem*). Das sieht dann so aus
wobei ich sämtliche ListViewItems abgeleitet habe, so dass Sie weitere Informationen (Zeiger auf andere Objekte) enthalten. Wenn das mit QWhatsThis nicht funktioniere will, kannst Du ja mal probieren auf die Nachricht pressed(QListViewItem*) zu reagieren.
Teil doch mal mit, ob es so klappt
Gruss Arne
Ich reagiere für die Bubble Help (QToolTip) auf die Nachricht onItem(QListViewItem*). Das sieht dann so aus
Code: Alles auswählen
connect (ListView,SIGNAL(onItem(QListViewItem*),this,SLOT(OnItem(QListViewItem*)));
void MeineKlasse::OnItem(QListViewItem *pItem)
{
QToolTip::remove(ListView->viewport());
QToolTip::hide();
if (pItem != NULL)
{
QToolTip::add(ListView->viewport(),"blabla");
}
}
Teil doch mal mit, ob es so klappt
Gruss Arne
ListViewItem-Hilfe im "What's This" Modus
Hallo Arne,
erstmal Danke, dass Du Dich mit der Sache beschäftigt hast.
Dein Vorschlag geht auch. Ist so ähnlich wie meine Variante mit der rechten Maustaste bloß ohne click.
// callback functions for GUI actions
connect(myListView,
SIGNAL( rightButtonPressed (QListViewItem *, const QPoint &, int) ),
this,
SLOT( displayItemInfo(QListViewItem *, const QPoint &) ));
Was ich aber möchte ist, nur im "What's This" Mode (Fragezeichencursor) eines Dialogs auf die Aktion zu reagieren. Ich finde jedoch keinen Weg, diesen Status abzufragen, wenn ich mit dem Fragezeichencursor auf das ListViewItem drücke bzw. gehe.
Ich bräuchte etwas wie: bool myListView::isInWhatsThisMode (void);
bzw. noch toller: QWhatsThis::add(myListViewItem, "ItemHelp")
Gruß, Stevie
erstmal Danke, dass Du Dich mit der Sache beschäftigt hast.
Dein Vorschlag geht auch. Ist so ähnlich wie meine Variante mit der rechten Maustaste bloß ohne click.
// callback functions for GUI actions
connect(myListView,
SIGNAL( rightButtonPressed (QListViewItem *, const QPoint &, int) ),
this,
SLOT( displayItemInfo(QListViewItem *, const QPoint &) ));
Was ich aber möchte ist, nur im "What's This" Mode (Fragezeichencursor) eines Dialogs auf die Aktion zu reagieren. Ich finde jedoch keinen Weg, diesen Status abzufragen, wenn ich mit dem Fragezeichencursor auf das ListViewItem drücke bzw. gehe.
Ich bräuchte etwas wie: bool myListView::isInWhatsThisMode (void);
bzw. noch toller: QWhatsThis::add(myListViewItem, "ItemHelp")
Gruß, Stevie
-
- Beiträge: 300
- Registriert: 3. November 2004 16:15
- Wohnort: Berlin
Hi Stevie
wie wärs mit
... mit GetWhatsThisText() als angenommener Methode des abgeleiteten ListViewItems (Annahme : Alle ListViewItems im ListView sind vom Typ QMyListViewItem)
Wenn ich die Frage richtig verstanden habe, wolltest Du doch wissen wann sich der Zeiger im WhatsThisMode über irgendeinem Item befindet ? Das ist bei ... hier ... der Fall
Gruss Arne
wie wärs mit
Code: Alles auswählen
void MyClass::OnItem(QListViewItem *pItem)
{
if (pItem != NULL)
{
QMyListViewItem *pMyItem = (QMyListViewItem*) pItem;
if (QWhatsThis::isInWhatsThisMode() == true)
{
QWhatsThis::add(ListView->viewport(), pMyItem->GetWhatsThisText());
... hier ...
}
}
}
Wenn ich die Frage richtig verstanden habe, wolltest Du doch wissen wann sich der Zeiger im WhatsThisMode über irgendeinem Item befindet ? Das ist bei ... hier ... der Fall
Gruss Arne
Moin Arne,
So wie ich das verstanden habe, ist die statisch Methode
QWhatsThis::inWhatsThisMode() dazu da, selbst anzumelden,
dass man sich im What's This Modus befindet. Das ist in der
Regel nach enterWhatsThisMode() der Fall, wenn man
customWhatsThis() überlädt und 'true' zurückliefert.
Ich habe aber den Standard "What's This" Button des QDialogs
und kan den Dialog nicht abfragen, ob er gerade im "What's This"
Modus ist, da ich nicht weiß wie. Ich bräuchte etwas wie
myDialog->isInWhatsThisMode(). Deshalb habe ich schon probiert
den Zeigertyp abzufragen, allerdings ohne Erfolg.
Gruß und Dank,
Stevie
So wie ich das verstanden habe, ist die statisch Methode
QWhatsThis::inWhatsThisMode() dazu da, selbst anzumelden,
dass man sich im What's This Modus befindet. Das ist in der
Regel nach enterWhatsThisMode() der Fall, wenn man
customWhatsThis() überlädt und 'true' zurückliefert.
Ich habe aber den Standard "What's This" Button des QDialogs
und kan den Dialog nicht abfragen, ob er gerade im "What's This"
Modus ist, da ich nicht weiß wie. Ich bräuchte etwas wie
myDialog->isInWhatsThisMode(). Deshalb habe ich schon probiert
den Zeigertyp abzufragen, allerdings ohne Erfolg.
Gruß und Dank,
Stevie
-
- Beiträge: 300
- Registriert: 3. November 2004 16:15
- Wohnort: Berlin
.. Ok, jetzt hab' ich es bei meinen Items ausprobiert. Man kann schon fragen, ob sich die Applikation im WhatsThis - Modus befindet, es scheitert m.E: aber daran, dass in diesem Modus kein OnItem() Signal gesendet wird und die Methode onItem deshalb gar nicht aufgerufen wird. Dann kann sie natürlich auch nicht fragen
Es gibt jedoch ein Beispiel in examples/helpsystem in dem das Problem (mit den Zellinhalten von QTable) gelöst wurde. Es ist wohl nicht so, dass einen die Lösung geradezu anspringt, aber ich habe mir das Beispiel kompiliert und es scheint zu funktionieren, d.h. für jede einzelne Zelle (oder z.B. auch Spalte im Header) gibt es verschiedene individuelle Texte, abhängig vom Inhalt
Vielleicht hilft das weiter
Gruss Arne
Es gibt jedoch ein Beispiel in examples/helpsystem in dem das Problem (mit den Zellinhalten von QTable) gelöst wurde. Es ist wohl nicht so, dass einen die Lösung geradezu anspringt, aber ich habe mir das Beispiel kompiliert und es scheint zu funktionieren, d.h. für jede einzelne Zelle (oder z.B. auch Spalte im Header) gibt es verschiedene individuelle Texte, abhängig vom Inhalt
Vielleicht hilft das weiter
Gruss Arne