Qt焦点事件
来源:互联网 发布:写作软件知乎 编辑:程序博客网 时间:2024/06/05 00:10
Qt焦点事件
为了尝试得到Qt窗口得到或者失去焦点的事件,使用了两种方法尝试:
方法一:重载窗口的 focusInEvent 和 focusOutEvent。
.h
protected: virtual void focusInEvent(QFocusEvent * event); virtual void focusOutEvent(QFocusEvent * event);
.cpp
void ShapeWindow::focusInEvent(QFocusEvent *){ qDebug()<<"show"; show();}void ShapeWindow::focusOutEvent(QFocusEvent *){ qDebug()<<"hide"; hide();}
方法二:使用 eventFilter 过滤。
.h
public slots: bool eventFilter(QObject *watched, QEvent *event);
.cpp
初始化时安装事件过滤:
ui->widget_shape->installEventFilter(this); ui->widget_thick->installEventFilter(this);
过滤函数:
bool MainWindow::eventFilter(QObject *watched, QEvent *event){ qDebug()<<"eventFilter"<<event->type()<<endl; if(watched == ui->widget_shape) { qDebug()<<"eventFilter widget_shape "<<event->type()<<endl; if(event->type() == QEvent::FocusIn) { qDebug()<<"eventFilter widget_shape FocusIn"<<endl; ; } else if(event->type() == QEvent::FocusOut) { qDebug()<<"eventFilter widget_shape FocusOut"<<endl; ui->widget_shape->hide(); } } else if(watched == ui->widget_thick) { qDebug()<<"eventFilter widget_thick "<<event->type()<<endl; if(event->type() == QEvent::FocusIn) { qDebug()<<"eventFilter widget_thick FocusIn"<<endl; ; } else if(event->type() == QEvent::FocusOut) { qDebug()<<"eventFilter widget_thick FocusOut"<<endl; ui->widget_thick->hide(); } } return QMainWindow::eventFilter(watched,event);}
widget默认是没有焦点的,此时使用上边两种方法都无法获取到焦点事件,需要设置窗口的 focusPolicy 属性,并在widget显示之后 setFocus()
void MainWindow::on_btn_thick_clicked() //粗细{ ui->widget_shape->hide(); ui->widget_thick->show(); ui->widget_thick->setFocus();}
阅读全文
0 0
- Qt中的焦点事件
- Qt焦点事件
- Qt中的焦点事件
- Qt中的焦点事件
- Qt焦点事件
- Qt中的焦点事件
- Qt中的焦点事件
- Qt中的焦点事件
- Qt QTableView焦点事件
- Qt焦点事件
- Qt焦点事件
- Qt焦点事件
- QT 获取焦点失去焦点事件
- Qt中的键盘事件以及焦点设置
- QT的键盘事件及焦点设置
- QT事件过滤器、事件重载和焦点事件
- qt焦点事件响应捕捉处理,事件过滤器
- QT事件过滤器来完成焦点事件任务
- 基础练习 十进制转十六进制
- 10 linux设备树的gpio和gpio中断应用实例
- 7-3 jmu-ds-单链表的基本运算(15 分)
- 使用xml模板导出excel时遇到尖括号<>转义的问题解决
- Http和Https的区别
- Qt焦点事件
- OpenGL学习资料汇总
- JS JSON和字符串相互转换
- FragmentManager is already executing transactions
- Android上定义播放器控件UniversalVideoView
- 2017-11-20
- Linux C使用bool类型 出现错误expected '=', ',', ';', 'asm' or '__attribute__'
- Xcode – iOS Deployment Target 支持iOS7.0以下低版本 与 Base SDK 配置低版本iOS SDK运行环境
- MATLAB中分类器的比较