防止焦点偏离QWidget
prevent focus out for a QWidget
我想写一个类似QDialog
的类。我已经很好地将鼠标事件过滤到非对话框窗口小部件中,但我仍然有焦点问题。由于QDialog
类只是一个常见的小部件,它可能会因按键(选项卡)而失去焦点。因此,与QDialog
lookalive无关的小部件,我不能点击,但可以对焦,可能会获得焦点。有没有一种巧妙的方法可以防止用户把注意力从我的对话框相似的子窗口上移开?
假设类似QDialog的小部件是一个单独的窗口,我认为您正在寻找QWdiget::setModal( true )
。它阻止应用程序的其他窗口中的小部件接收任何输入事件。
这里有一个解决方案:
// somewhere in your code
connect(qApp, SIGNAL(focusChanged(QWidget*,QWidget*)),
SLOT(focusChanged(QWidget*,QWidget*)));
void MyDialog::focusChanged(QWidget*, QWidget* to)
{
if (!isAncestorOf(to))
{
QWidget* widget(qobject_cast<QWidget*>(children().front()));
widget->setFocus(Qt::OtherFocusReason);
QKeyEvent event(QEvent::KeyPress, Qt::Key_Tab, Qt::NoModifier);
qApp->sendEvent(widget, &event);
}
// else do nothing
}
假设子级是QFrame
或QWidget
的实例。
相关文章:
- 如何在QT Creator上将QWidget声明为继承类的对象
- QWidget::p aintEngine:不应再在 QTreeWidget 派生类中调用
- 将一个 QWidget 链接到另一个新创建的 QWidget
- 有没有办法区分Qt小部件是通过鼠标单击还是通过按表键获得焦点?
- 为什么 isVisible 在 QWidget 孩子中不起作用
- MFC:如何设置CEdit框的焦点?
- 如何声明全局QWidget?
- QWidget UI 在使用 QQuickWidget 时冻结
- "(QWidget* pobj=0)"和"(QWidget* pwgt/*=0/)&quo
- qt QWidget::closeEvent link issue
- 如何在QMdiSubWindow关闭后删除QWidget
- 在 ubuntu 焦点上编译虚幻引擎 4.25 时出错
- 如何在QGraphicsView中移动QWidget?
- 如何在 wxWidgets 中从 wxTextCtrl 中删除焦点
- 每次qt窗口获得焦点时调用函数
- Qt如何在QRect上设置焦点
- 如何返回当前有焦点的QWidget
- 防止焦点偏离QWidget
- 检测QWidget何时失去焦点的可靠方法
- 如何有选择地使QWidget接受鼠标单击的焦点