[gelöst] QT Anwendung immer im Vordergrund

Alles rund um die Programmierung mit Qt
Antworten
RealProgrammer
Beiträge: 19
Registriert: 7. August 2006 09:10

[gelöst] QT Anwendung immer im Vordergrund

Beitrag 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
Zuletzt geändert von RealProgrammer am 16. August 2006 12:11, insgesamt 1-mal geändert.
Nassian
Beiträge: 126
Registriert: 20. Juni 2005 21:14

Beitrag 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.
RealProgrammer
Beiträge: 19
Registriert: 7. August 2006 09:10

Beitrag 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
ChMaster
Beiträge: 252
Registriert: 23. Februar 2005 14:44
Wohnort: RP -> Alzey
Kontaktdaten:

Beitrag von ChMaster »

servus,

HIER für Qt4 und HIER für Qt3 findest du was du suchst, hoff ich ;)
ChMaster
------------ Projekte------------
DBoxFE
DMS
First4 (Plugin-Develper)
RealProgrammer
Beiträge: 19
Registriert: 7. August 2006 09:10

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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);
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RealProgrammer
Beiträge: 19
Registriert: 7. August 2006 09:10

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Nunja - wenn man kde-Funktionen benutzt sollte man auch die dazugehörige Lib hinzulinken...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RealProgrammer
Beiträge: 19
Registriert: 7. August 2006 09:10

Beitrag von RealProgrammer »

Danke dir, haben es gefunden und kompiliert, läuft alles einwandfrei, nochmals vielen Dank =)


Mfg

Da Real
Antworten