2011-07-22 12 views
2

私のアプリケーションはOSのロック画面(GDMのロック画面やKDEのような)ですので、私はそれを1つのように機能させようとしています。Qt4:全画面表示ができない(画面をロックする)のですか?

私は上のすべて他のウィンドウを無効/インターセプトそれが消えてしまい、すべてのキーボードショートカット(ALT-TABCTRL-ALT-Dなど)を自分のアプリケーションのウィンドウホバーを作成しようとしています。

これを行う方法はありますか?私は100%GUIが存在するロック画面が存在すると確信していますが、私はちょうど見る場所を見つけることができません...

+0

下記を参照してください。私はいくつかのゲームがそれをするかもしれないと思うが、少なくともCtrl-Alt-F1を使ってテキストコンソールにアクセスできるはずです。 –

+0

@OrbWeaver、この質問は、ロック画面を作成する方法を尋ねていると考えてください。そのようなプログラムはすでに存在する。彼らが働くことができるのは何ですか?たとえば、画面がロックされていることをWMやOSに伝えるために使用する必要のあるAPIかもしれません。 –

答えて

2

私はQtでそれを行う方法がわかりませんが、あなたは何ですか探しているのはgrabbingです。 pointer input devicekeyboardをつかむことができます。

編集: Qt4のドキュメントを見て、QWidget::grabMouseを試してみましたか?この関数はあなたが望むものとまったく同じように見えます。

+0

リンクをありがとう。私はこれらを手にしています。 – Blender

+0

私は 'XGrabServer'を使ってサーバを完全にロックすることができましたが、私のウィンドウは応答しません。私はマウスカーソルを動かすことができますが、ロック画面も死んでいます... – Blender

+0

*(facepalm)*。 Qt4のドキュメントをマウスやキーボードで調べたのはなぜですか?どちらの方法でも、私のアプリケーションは 'ほぼgrabKeyboard()'と 'grabMouse()'で完全に動作します。私はちょうどウィジェットの*すべての*マウスにアクセスする必要があります。ありがとう! – Blender

0

これが最善の解決策であるかどうかは知りませんが、QObject::installEventFilter()を使用してイベントハンドラを試すことができます。

Windowsを使用している場合は、メッセージを処理するイベントフィルタをインストールして、event->type() == QEvent::WinEventActとすることができます。

私は本当に他のOSについて多くを知らないが、Qtは、おそらくあまりにもそのために何かを持っています。パラメータQt::WindowStaysOnTopHint

0

継承Qwidgetクラスは、それが任意のアプリケーションは、このように引き継ぐために許可されている場合、私はウィンドウシステムやデスクトップ環境のバグ、それを検討する

myclass::myclass(QWidget *parent) : QWidget(parent,Qt::WindowStaysOnTopHint) 
関連する問題