如何在qt中检测capslock状态



可能的重复项:
Qt 4.7.4: 有没有办法找出大写锁定的状态?

如何在 mac OS x 上的 qt 中检测 capslock 键状态。我试过了

Display *

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中找不到符号收集2:LD 返回 1 个退出状态

我是qt开发的新手。我不明白为什么它向我显示此错误。我已经包含了"#include"头文件。如果有人知道,请帮助我。

您可以使用以下方法检测对键的更改:

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

在某些情况下,这些可用于确定状态,例如,如果您知道程序初始化时大写锁定的状态,或者假设或需要某种状态。但是,据我所知,没有独立于平台的方法可以直接查询大写锁定的当前状态。您将需要使用依赖于平台的方法。请务必支持大写锁定状态不存在或无法检测到的情况。

最新更新