如何检测qt中的大写状态?

时间:2012-12-03 15:54:58

标签: macos qt capslock

  

可能重复:
  Qt 4.7.4: Is there a way to find out the status of 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”头文件。 如果有人知道请帮助我。

1 个答案:

答案 0 :(得分:0)

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

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

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