1

重複の可能性:
Qt 4.7.4: CAPS LOCK の状態を調べる方法はありますか?

Mac OS X の qt で capslock キーのステータスを検出する方法。私が試してみました

表示 * d = XOpenDisplay((char*)0);

bool caps_state = false;
if (d)
 {
  unsigned n;
  XkbGetIndicatorState(d, XkbUseCoreKbd, &n);
  caps_state = (n & 0x01) == 1;
 }
 return caps_state;

しかし、それは私に次のエラーを与えます:

アーキテクチャ x86_64 の未定義のシンボル:

「_XOpenDisplay」、次から参照: .o myclass::GetCapslockState()

  myclass::keyEvent(QKeyEvent*)     

「_XkbGetIndicatorState」、次から参照: .o

  myclass::GetCapslockState()       in .o
  myclass::keyEvent(QKeyEvent*)      in .o

ld: アーキテクチャ x86_64 のシンボルが見つかりません collect2: ld は 1 つの終了ステータスを返しました

私はqt開発に不慣れです。このエラーが表示される理由がわかりません。「#include」ヘッダー ファイルをインクルードしました。誰かが知っているなら、私を助けてください。

4

1 に答える 1

1

次の方法でキーの変更を検出できます。

QWidget::keyPressEvent()
// and
QWidget::keyReleaseEvent()

これらは、プログラムの初期化時に Caps Lock の状態を知っている場合や、特定の状態を想定または必要とする場合など、状況によっては状態を判断するために使用できます。ただし、caps lock の現在の状態を完全にクエリするための、プラットフォームに依存しない手段は私が知っているものではありません。プラットフォームに依存する手段を使用する必要があります。Caps Lock 状態が存在しない、または検出できないケースをサポートしてください。

于 2012-12-03T17:31:21.580 に答える