事件过滤器
来源:互联网 发布:马鞍山电视网络大学 编辑:程序博客网 时间:2024/06/03 05:40
dialog.h
#include <QDialog>namespace Ui {class Dialog;}class Dialog : public QDialog{ Q_OBJECTpublic: explicit Dialog(QWidget *parent = 0); ~Dialog();protected: bool eventFilter(QObject *obj, QEvent *event);private: Ui::Dialog *ui;};
dialog.cpp
#include "dialog.h"#include "ui_dialog.h"#include <QKeyEvent>#include <QDateTime>#pragma execution_character_set("utf-8")Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog){ ui->setupUi(this); ui->recordName->setFocus(); // 安装事件过滤器 ui->recordName->installEventFilter(this); ui->archiveCheckComboBox->installEventFilter(this); ui->remarks->installEventFilter(this); ui->createNewTraceBtn->installEventFilter(this); ui->coverOldTraceBtn->installEventFilter(this); ui->cancle->installEventFilter(this);}Dialog::~Dialog(){ delete ui;}bool Dialog::eventFilter(QObject *obj, QEvent *event){ if( obj == ui->recordName || obj == ui->archiveCheckComboBox || obj == ui->remarks || obj == ui->createNewTraceBtn || obj == ui->coverOldTraceBtn || obj == ui->cancle ) { if( event->type() == QEvent::KeyPress ) { //将事件转化为键盘事件 QKeyEvent *key_event = static_cast< QKeyEvent* >( event ); //按下回车键执行焦点切换事件 if( key_event->key() == Qt::Key_Return ) { bool recordName_focus = ui->recordName->hasFocus(); bool archiveCheckComboBox_focus = ui->archiveCheckComboBox->hasFocus(); bool remarks_focus = ui->remarks->hasFocus(); bool createNewTraceBtn_focus = ui->createNewTraceBtn->hasFocus(); bool coverOldTraceBtn_focus = ui->coverOldTraceBtn->hasFocus(); bool cancle_focus = ui->cancle->hasFocus(); if( recordName_focus ) { focusNextChild(); ui->archiveCheckComboBox->setFocus(); } else if( archiveCheckComboBox_focus ) { focusNextChild(); ui->remarks->setFocus(); } else if( remarks_focus ) { focusNextChild(); ui->createNewTraceBtn->setFocus(); } else if( createNewTraceBtn_focus ) { focusNextChild(); ui->coverOldTraceBtn->setFocus(); } else if( coverOldTraceBtn_focus ) { focusNextChild(); ui->cancle->setFocus(); } else if( cancle_focus ) { focusNextChild(); ui->recordName->setFocus(); } else { focusNextChild(); } return true; } } } return QDialog::eventFilter( obj, event );}
阅读全文
0 0
- 事件过滤器
- 事件过滤器
- 事件过滤器
- 事件过滤器
- 事件过滤器
- 事件过滤器
- 创建事件过滤器和安装事件过滤器
- Qt事件处理-事件过滤器
- Qt事件处理-事件过滤器
- Qt的事件过滤器
- Qt的事件过滤器
- QT事件过滤器
- qt事件过滤器
- Qt 事件过滤器
- Qt的事件过滤器
- Qt 事件过滤器
- Qt的事件过滤器
- QT事件过滤器
- Java 冒泡排序
- Linux系统--awk命令
- SharePoint 2016 Project 调出管理用户
- 2017-06-01总结
- java中自定义异常& 编译时异常&运行时异常
- 事件过滤器
- 仿QQ语言变声功能
- Qstring转char*
- JS基础 面向对象方式写选项卡
- load命令
- Unity场景自动保存工具
- utf8_general_ci、utf8_unicode_ci和utf8_bin的区别
- arm下gdb调试和杀线程以及make编译
- Android自定义View详解