从窗口启动程序时如何查看键盘修饰符?
How to see keyboard modifiers when program launched from windows?
我有一个Qt应用程序,想确定在启动应用程序时是否按住了Shift(或Ctrl)键。 我的目标是为应用程序实现"安全模式"。
我尝试使用QApplication::keyboardModifiers()
但无论我在启动应用程序时按住什么键,无论是双击它还是从命令行启动,该函数总是返回 0(无修饰符)。
int main(int argc, char *argv[]) {
QString homeDocs = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)+"/";
QCoreApplication::setApplicationName(getAppName());
QCoreApplication::setOrganizationName(getDeveloperName());
QCoreApplication::setOrganizationDomain(getDeveloperDomain());
QSettings settings;
QApplication a(argc, argv);
QStringList args = a.arguments();
Qt::KeyboardModifiers test = QApplication::keyboardModifiers();
收到代码 0,但需要指示按住哪些键的位标志。
使用QApplication::queryKeyboardModifiers()
而不是QApplication::keyboardModifiers()
。
有关更多详细信息,请参阅文档。
例:
Qt::KeyboardModifiers key = QApplication::queryKeyboardModifiers();
if(key == Qt::ShiftModifier){
qDebug() << "Shift key is pressed";
}
if(key == Qt::ControlModifier){
qDebug() << "Ctrl key is pressed";
}
我认为您倾向于实现一个在按下 Ctrl 足够时间时将运行的函数。
您可以覆盖 mousePressEvent 以确认按下 Ctrl 并启动计时器,然后您应该覆盖 mouseReleaseEvent 以确认计时器按下 ctrl 的时间。
相关文章:
- 内置函数可查看CPP中的成员变量
- 物理键盘上的触发器按键
- 如何使用C/C++在MacOSX中获得键盘布局
- 函数何时会在c++中包含stack_Unwind_Resume调用
- Python中的for循环与C++有何不同
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 视窗键盘输入 c++
- C++类型特征,以查看是否可以<uint32_t>对类型"K"的任何变量调用"static_cast(k)"
- COM :是否可以查看是否存在对我的某个 COM 对象的进程外引用?我可以释放它吗?
- 如何存储用户输入的所有数据,然后在他们想要查看所有数据时显示它们
- 在C++中释放内存期间,迭代器与指针有何不同
- 将鼠标和键盘输入发送到 unity3d 游戏 (Rust)
- Netbeans 10:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- C ++异步键盘输入(标准方式)
- 键盘不起作用 - Arduino Uno - 与变量有关的多个错误
- 如何在程序执行时查看Valgrind Massif输出(或其他堆分析器)?
- 链接器命令失败,macOS 上的退出代码为 1(使用 -v 查看调用)
- 如何在 WindowProc 处理程序中区分箭头键和数字键盘?
- 覆盖应用程序的低级别键盘挂钩问题
- 从窗口启动程序时如何查看键盘修饰符?