Seite 1 von 2

QT5 : TrayIcon Fehler???

Verfasst: Mo 30. Sep 2024, 12:49
von Poly
Hallo zusammen,

ich habe gerade bei der Erstellung eines kleinen Programms zur Aufnahme des Bildschirms folgendes Problem festgestellt.
Wenn ich durch das Hinzufügen der Komponente gb.gui.trayicon ein TrayIcon mit einem kleinen Menu erstelle, dann habe ich bei QT5 folgendes Problem.
Nur wenn ich mir das Menu durch ein _Click Event anzeigen lassen, funktioniert alles wie erwartet.
Wenn ich aber stattdessen zur Anzeigen des TrayIcon-Menü ein _Menu Event nutzen möchte, also die rechte Maustaste, dann friert das Programm beim Versuch das Menü anzuzeigen ständig ein.
Es ist ein schwerwiegender Fehler, weil ich habe keine andere Möglichkeit, als das gesamte System herunterzufahren.
Nutze ich anstelle von QT5, GTK+3 funktioniert es hingegen einwandfrei.
Kann das jemand bestätigen? Ist das ein Bug?

Mein System:

Gambas 3.19.3
System: Devuan GNU/Linux 5 (daedalus)
Kernel: 6.1.0-21-amd64
Architektur: x86_64
Desktop. KDE ohne Wayland
QT5 :libQT5core.so.5.15.8

Ich habe leider noch nicht die neuste Version von Gambas installiert, kann das also damit nicht prüfen.
Falls es sich auch in der neusten Version bestätigen und es wirklich ein Bug sein sollte, könnte es dann vielleicht bitte jemand mit einem Account im Bug Tracker melden. Danke

Re: QT5 : TrayIcon Fehler???

Verfasst: Mo 30. Sep 2024, 20:59
von Bonus
Ich habe verschiedene Programme, die Trayicon verwenden, die alle wie erwartet mit qt5 zu funktionieren scheinen, indem sie die PopupMenu-Eigenschaft verwenden.

Posten Sie einen Beispielcode, damit wir sehen können, was passiert.

Re: QT5 : TrayIcon Fehler???

Verfasst: Mo 30. Sep 2024, 21:24
von Poly
Ganz lieben Dank für die schnelle Rückmeldung.
Also wie gesagt, mit GTK+3 funktioniert es, aber unter QT5 funktioniert nur mit dem _Click event (siehe Kommentar Code unten).

Hier mal mein Beispiel Code, welches sich nur auf das TrayIcon bezieht.
Ich kann auch gerne das ganzen Programm senden, es ist aber noch nicht ganz fertig.
Das Problem tritt bei mir aber in allen Programmen auf, in welchen ich diesen Code verwende.

Ich möchte mir hier nicht mit fremden Federn schmücken, das ganze ist in Anlehnung an das Buch.
https://github.com/demosthenesk/the_gambas3_book, Seite 629
Hier wird aber das _Click Event genuzt.
Da aber alle Programme in der Taskleiste unter Linux gewöhnlich mit der rechten Maustaste ausgewählt werden, wollte ich es eben auch so realisieren. ---> also mit den _Menu Event.
gambas code

'Für das TrayIcon
Private hTrayIcon As TrayIcon
Private Mnu As Menu
Private Opt1 As Menu
Private Opt2 As Menu

'Initialisierung des TrayIcon 
Public Sub _new()
 'create trayicon
 hTrayIcon = New TrayIcon As "hTrayIcon"
 hTrayIcon.Picture = Picture["Gambi.png"]
 hTrayIcon.Tooltip = "Anzeigen der Oberfläche"
 hTrayIcon.Show

 InitMenu()
 
End


'Das Menü des TrayIcons
Public Sub InitMenu()
  
'setup popup menu
 Mnu = New Menu(Me)
 Mnu.Name = "Mnu"
  
 'setup option1
 Opt1 = New Menu(Mnu) As "MenuTray"
 Opt1.Name = "Opt1"
 Opt1.Caption = "Programm Anzeigen"
 Opt1.Visible = True

 'setup option2
 Opt2 = New Menu(Mnu) As "MenuTray"
 Opt2.Name = "Opt2"
 Opt2.Caption = "Programm beenden"
 Opt2.Visible = True
  
End

Public Sub MenuTray_Click()
 Select Case Last.name
   Case "Opt1"
     Me.Visible = True
     Me.Minimized = False
   Case "Opt2"
     Quit
 End Select
End


Public Sub hTrayIcon_Menu()    ----> das hier funktioniert bei mir unter QT5 nicht, wenn hier _Click() steht, dann geht es. 
 Mnu.Popup
End


Ich habe gerade auch noch mal ausprobiert die Taskleiste zu verschieben. Es ist aber egal ob sie oben oder unten ist, unter QT5 friert der Bildschirm auf meinen System ein und auch die Abbruch-Shortcuts sowohl von Gambas wie auch vom System funktionieren nicht mehr.

Wie gesagt, kann ich auch gerne einen Link zu meinem Beispielprogramm senden, wenn gewünscht.
Danke :)

Re: QT5 : TrayIcon Fehler???

Verfasst: Mo 30. Sep 2024, 23:34
von Bonus
Mit .PopupMenu ?
gambas code

'Initialisierung des TrayIcon 
Public Sub _new()
 'create trayicon
 hTrayIcon = New TrayIcon As "hTrayIcon"
 hTrayIcon.Picture = Picture["Gambi.png"]
 hTrayIcon.Tooltip = "Anzeigen der Oberfläche"
 hTrayIcon.Show
 
 InitMenu()

hTrayIcon.PopupMenu = "Mnu"
  
End

' Public Sub hTrayIcon_Menu()    ----> das hier funktioniert bei mir unter QT5 nicht, wenn hier _Click() steht, dann geht es. 
'  Mnu.Popup
' End


Re: QT5 : TrayIcon Fehler???

Verfasst: Di 1. Okt 2024, 00:41
von Poly
Du bis echt ein Guru :D
Ganz lieben Dank, es funktioniert perfekt. :)

Ich bin daran wirklich fast verzweifelt, weil es wirklich jedes mal mein System komplett lahmgelegt hat.
Wieso funktioniert das denn ohne diese Zeile mit GTK+3?
Kannst Du das vielleicht auch noch beantworten? ;)

Re: QT5 : TrayIcon Fehler???

Verfasst: Di 1. Okt 2024, 01:39
von Bonus
Ich weiß es nicht, wenn Sie sich das Wiki ansehen, hat das Tray Icon anscheinend nicht einmal ein _Menu-Ereignis :D
https://gambaswiki.org/wiki/comp/gb.gui ... n/trayicon

Re: QT5 : TrayIcon Fehler???

Verfasst: Di 1. Okt 2024, 17:20
von Poly
Oh, vielen Dank. Eigentlich lese ich immer in der Wiki, aber da ich am Anfang irgendwie die GTK+3 Komponente eingeschaltet hatte und es da ja funktioniert hat, habe ich echt an einen Bug gedacht. Vielleicht bin ich einfach auch nur ein übereifriger Bug-Jäger der einfach keinen finden will :lol:
Finde es aber klasse, dass es mit Deinem Code geht, auch wenn dieses Ereignis in der Wiki nicht benannt wird, denn ich bin der Meinung, dass die Programme in der Taskleiste, wie bei Linux üblich, mit der rechten Maustaste angesprochen werden sollten.
Vielleicht könnte dieses Ereignis offiziell aufgenommen werden?

Dir noch einmal ganz herzlichen Dank, ich bin gerade dabei das erste echt brauchbare Programm für meine eigene Bedürfnisse zusammen zuschreiben und bin froh, dass ich nicht dauern den Rechner neu hochfahren muss ;D

Best regards, Poly

Re: QT5 : TrayIcon Fehler???

Verfasst: Di 1. Okt 2024, 18:04
von Bonus
Ich kann mir eine gewisse Verwirrung vorstellen, da das Wiki dort immer noch das alte QT-Tray-Symbol hat.
Das war ein Gambas-QT-Control, das alle Dinge unterstützte, die Control.class tun kann.
https://gambaswiki.org/wiki/comp/gb.qt4/trayicon

Aber QT Tray Icon existiert nicht mehr und jetzt haben wir gb.gui.trayicon, das anders ist und Control.class nicht erbt

Re: QT5 : TrayIcon Fehler???

Verfasst: Di 1. Okt 2024, 19:09
von Poly
Danke für die Erklärung.
Bedeutet das, dass es besser wäre, wenn ich das _Menu Ereignis nicht mehr nutze?

Mit Deiner erweiterten Zeile funktioniert es gerade echt prima.
Ich werde es weiterhin für mein kleines Programm nutzen, aber wahrscheinlich wird mensch es so nicht weitergeben sollen, richtig?

Also das neue, gb.gui.trayicon, hat dieses Ereignis nicht mehr?

Re: QT5 : TrayIcon Fehler???

Verfasst: Di 1. Okt 2024, 19:19
von Poly
Hier habe ich mal die eine absolut unfertige Version des Programms hochgeladen.
Leider nur auf Deutsch.

https://cloud.disroot.org/s/HKZDtfq2G85fw57

Das mit dem TrayIcon klappt bei mir sowohl unter QT5, wie auch unter GTK+3 prima.

Re: QT5 : TrayIcon Fehler???

Verfasst: Di 1. Okt 2024, 19:32
von Bonus
Poly hat geschrieben:
Di 1. Okt 2024, 19:09
Danke für die Erklärung.
Bedeutet das, dass es besser wäre, wenn ich das _Menu Ereignis nicht mehr nutze?
Ja, tatsächlich. Im Beispiel habe ich das Ereignis hTrayIcon_Menu() tatsächlich auskommentiert. (Ich hoffte, dass du das sehen würdest)

Das Menü-Popup wird intern verarbeitet und ist daher nicht erforderlich.

Seltsamerweise konnte ich das _Menu-Ereignis in QT oder GTK auf meinem System überhaupt nicht auslösen, einfach nichts.

Hier funktioniert nur das Setzen des .PopupMenu :-\

Schön, dass es dir wieder gut geht :)

Re: QT5 : TrayIcon Fehler???

Verfasst: Di 1. Okt 2024, 19:48
von Poly
Vielen Dank für Deine ganze Mühe.

Ich habe gerade auch Deine Nachricht in der Mailing List gesehen.

Kannst Du bei meinen Beispielprogramm das Menü-Ereignis nicht auslösen oder findest Du das hässliche Icon nicht in der Taskleiste ;) ?

Re: QT5 : TrayIcon Fehler???

Verfasst: Di 1. Okt 2024, 20:13
von Bonus
Gern geschehen :)

Ich habe deinen Code genau kopiert.

(aber nicht das Symbol, da ich es nicht habe)

Das Taskleistensymbol wird angezeigt, aber ein Rechtsklick hat nichts bewirkt.

Re: QT5 : TrayIcon Fehler???

Verfasst: Di 1. Okt 2024, 20:24
von Poly
> (aber nicht das Symbol, da ich es nicht habe)

Do you mean my code or the link to my programme?
I have linked the whole programme or the whole project folder as a tar.gz archive above. The symbol should actually be there.

https://cloud.disroot.org/s/HKZDtfq2G85fw57

But I don't want to bother you too long.
I am really very grateful to you for your many informative tips and still for your programmes, without which I would certainly not have found the motivation to spend more time with Gambas.

Thank you :)

Re: QT5 : TrayIcon Fehler???

Verfasst: Di 1. Okt 2024, 20:58
von Bonus
> (aber nicht das symbol, da ich es nicht habe)

google Translator :-\

Symbol = Icon
hTrayIcon.Picture = Picture["Gambi.png"]

Ich habe den gesamten Beispielcode bis auf den Teil „hTrayIcon.Picture=" kopiert