Seite 1 von 1
[gelöst] QT Anwendung immer im Vordergrund
Verfasst: 11. August 2006 09:44
von RealProgrammer
Hi Leute,
weiss zufällig jemand was man machen muss damit eine QT Anwendung immer im Vordergrund bleibt und sich nicht in den Hintergrund klicken lässt?
Auf meinem Rechner läuft Suse 9.3, WindowManager ist KDE.
MfG,
Da Real
Verfasst: 11. August 2006 10:42
von Nassian
Du musst beim Erstellen des Fensters das WStyle Flag: Qt::WStyle_StaysOnTop setzen. Unter X11 funktioniert das angeblich nicht, da musst du den raise() SLOT deines Fensters in einer Schleife aufrufen, ist allerdings unsauber.
Verfasst: 15. August 2006 13:55
von RealProgrammer
Hallo zusammen,
Qt::WStyle_StaysOnTop funktioniert bei uns nicht, da wir auch einen X11 benutzen.
Könntest du mir evtl. ein Code Beispiel für den raise() Aufruf geben? Leider weiss ich nicht an welcher Stelle ich ihn in mein Programm einbauen soll, aber die Maske immer im Vordergrund zu behalten ist essentiell für mein Projekt.
Ein weiterer Versuch von mir war das ganze direkt über den X-Server zu steuern:
Code: Alles auswählen
void frmStammdaten::vordergrund()
{
sleep(10);
XWindowChanges xwc;
int screen_number;
xwc.stack_mode = TopIf;
screen_number = DefaultScreen(XtDisplay(this));
XReconfigureWMWindow(XtDisplay(this), XtWindow(this), screen_number,CWStackMode,&xwc);
}
Folgende Fehlermeldung kam dabei heraus:
Code: Alles auswählen
frmstammdaten.ui.h:838: error: cannot convert `frmStammdaten* const' to `_WidgetRec*' for argument `1' to `Display* XtDisplay(_WidgetRec*)'
Wäre nett wenn nochmal jemand drüberschauen könnte.
Mfg
Da Real
Verfasst: 15. August 2006 16:04
von ChMaster
servus,
HIER für Qt4 und
HIER für Qt3 findest du was du suchst, hoff ich

Verfasst: 16. August 2006 08:23
von RealProgrammer
Hi,
das funktioniert leider auch nicht da mein Fenster eine MainWindow Anwendung ist und kein Dialog, also auch keine Modal eigenschaft besitzt. Danke aber für den Vorschlag. Ich benutze übrigens QT 3.3.4.
MfG,
Da Real
Verfasst: 16. August 2006 11:03
von Christian81
Für KDE gibts die Funktion KWin::setState()
Code: Alles auswählen
KWin::setState(main->winId(), NET::StaysOnTop);
KWin::clearState(main->winId(), NET::StaysOnTop);
Verfasst: 16. August 2006 12:01
von RealProgrammer
Hi Christian,
habe die kwin.h eingebunden und versucht setState aufzurufen, folgendes ist dabei herausgekommen:
Code: Alles auswählen
obj/frmstammdaten.o(.text+0xf45): In function `frmStammdaten::vordergrund()':
/usr/lib/qt3/include/qwidget.h:738: undefined reference to `KWin::setState(unsigned long, unsigned long)'
Hast du evtl. eine Ahnung woran das liegen könnte?
Mfg
Da Real
Verfasst: 16. August 2006 12:03
von Christian81
Nunja - wenn man kde-Funktionen benutzt sollte man auch die dazugehörige Lib hinzulinken...
Verfasst: 16. August 2006 12:10
von RealProgrammer
Danke dir, haben es gefunden und kompiliert, läuft alles einwandfrei, nochmals vielen Dank =)
Mfg
Da Real