1

可能重复:
Qt 4.7.4:有没有办法找出 CAPS LOCK 的状态?

如何在 mac os x 上检测 qt 中的大写锁定键状态。我努力了

显示 * 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 devlopment 的新手。我不明白为什么它向我显示此错误。我已经包含了“#include”头文件。如果有人知道请帮助我。

4

1 回答 1

1

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

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

这些可用于在某些情况下确定状态,例如您是否知道程序初始化时大写锁定的状态,或者您假设或需要某个状态。但是,我知道没有独立于平台的方法来彻底查询大写锁定的当前状态。您将需要使用平台相关的方法。一定要支持大写锁定状态不存在或无法检测到的情况。

于 2012-12-03T17:31:21.580 回答