【发布时间】:2016-03-23 16:09:22
【问题描述】:
我在 Windows 10 上使用 Qt 5.5,我想在 Foreground 中打开 QWidget 并希望 关注 LineEdit,类似于 Windows 上的 RUN (WIN + R)。问题是应用程序在后台运行,我只有一个键盘记录器来注册一个快捷键(LCTRL + LWIN + T)来切换窗口(显示+焦点/隐藏)。
如果按下快捷键,我执行以下代码:
if(this->isHidden()){
this->show();
//Windows API Methods:
SetActiveWindow((HWND) this->winId());
SetForegroundWindow((HWND) this->winId());
SetFocus((HWND) this->winId());
this->_edit->setFocus();
qDebug() << "[OUT][DONT WORKING] Window shoud be shown and focused";
}else{
this->hide();
qDebug() << "[OUT][WORKING] Window shoud be hidden";
}
如果我现在按 LCTRL + LWIN + T,它会在后台打开窗口,这不是我想要的。有人可以解释为什么这不起作用吗?如果窗口在前台打开并且文本框聚焦,我该怎么办?而且我不想设置标志StayAlwaysOnTop,因为那时文本字段仍然没有聚焦。
我希望你能帮助我。 非常非常感谢!
【问题讨论】:
标签: c++ windows qt c++11 winapi