当前位置: 首页 > news >正文

祈网网站建设wordpress翻译公司网站

祈网网站建设,wordpress翻译公司网站,白云区网站开发公司,企管宝官网本章要实现的整体效果如下#xff1a; QEvent::KeyPress ​ 键盘按下时#xff0c;触发该事件#xff0c;它对应的子类是 QKeyEvent QEvent::KeyRelease ​ 键盘抬起时#xff0c;触发该事件#xff0c;它对应的子类是 QKeyEvent 本节通过两个案例来讲解这 2 个事件 QEvent::KeyPress ​ 键盘按下时触发该事件它对应的子类是 QKeyEvent QEvent::KeyRelease ​ 键盘抬起时触发该事件它对应的子类是 QKeyEvent 本节通过两个案例来讲解这 2 个事件 键盘按下、释放事件的基本使用通过键盘的上下左右箭头控制标签控件的上下 1. 键盘按下、释放事件的基本使用 只需重写 keyPressEvent() 和 keyPressEvent() 两个函数即可 首先在 key_widget.h 中添加两个函数的声明 class KeyWidget : public QWidget { protected:void keyPressEvent(QKeyEvent* event);void keyReleaseEvent(QKeyEvent* event); };然后来到 key_widget.cpp 实现这 2 个函数 void KeyWidget::keyPressEvent(QKeyEvent* event) {// 普通键switch ( event-key() ) {case Qt::Key_Return:qDebug() Enter;break;case Qt::Key_Escape:qDebug() Esc;break;case Qt::Key_Control:qDebug() Ctrl;break;case Qt::Key_Shift:qDebug() Shift;break;case Qt::Key_Alt:qDebug() Alt;break;case Qt::Key_Up:qDebug() Up;break;case Qt::Key_Down:qDebug() Down;break;case Qt::Key_Left:qDebug() Left;break;case Qt::Key_Right:qDebug() Right;break;case Qt::Key_A:qDebug() A;break;case Qt::Key_B:qDebug() B;break;case Qt::Key_C:qDebug() C;break;case Qt::Key_D:qDebug() D;break;default:break;}// 两键组合// qDebug() event-modifiers(); // QFlagsQt::KeyboardModifier(ShiftModifier|ControlModifier)// event-modifiers()用来判读是否按下 Ctrl/Shift/Alt 键if ( (event-modifiers() Qt::ControlModifier) (event-key() Qt::Key_A) ) {qDebug() Ctrl A;}if ( (event-modifiers() Qt::ShiftModifier) (event-key() Qt::Key_C) ) {qDebug() Shift B;}if ( (event-modifiers() Qt::AltModifier) (event-key() Qt::Key_B) ) {qDebug() ALT C;}// 三键组合Shift Ctrl D 的实现if ( (event-modifiers() (Qt::ShiftModifier | Qt::ControlModifier)) (event-key() Qt::Key_D) ) {qDebug() CTRL Shift D;} }void KeyWidget::keyReleaseEvent(QKeyEvent* event) {switch ( event-key() ) {case Qt::Key_Return:qDebug() keyReleaseEvent: Enter;break;case Qt::Key_Escape:qDebug() keyReleaseEvent: Esc;break;case Qt::Key_Up:qDebug() keyReleaseEvent: Up;break;case Qt::Key_Down:qDebug() keyReleaseEvent: Down;break;case Qt::Key_Left:qDebug() keyReleaseEvent: Left;break;case Qt::Key_Right:qDebug() keyReleaseEvent: Right;break;case Qt::Key_A:qDebug() keyReleaseEvent: A;break;case Qt::Key_B:qDebug() keyReleaseEvent: B;break;case Qt::Key_C:qDebug() keyReleaseEvent: C;break;case Qt::Key_D:qDebug() keyReleaseEvent: D;break;case Qt::Key_Control:qDebug() keyReleaseEvent: Ctrl;break;case Qt::Key_Shift:qDebug() keyReleaseEvent: Shift;break;case Qt::Key_Alt:qDebug() keyReleaseEvent: Alt;break;} }说明 每个按键对应一个枚举值比如 Qt::Key_A 代表按键 AQt::Key_Control 代表 Crtl 键等等QKeyEvent 类的 key() 方法可以获取当前按下的哪个按键判断 Ctrl/Shift/Alt 等控制按键需要使用 QKeyEvent 类的 modifiers() 方法 最后还需要在构造中添加如下语句 KeyWidget::KeyWidget(QWidget* parent) : QWidget{parent} {setFocusPolicy(Qt::StrongFocus); }此时运行程序可以看到打印如下 2. 键盘事件移动标签 接下来实现一个小案例通过上下左右按键来移动标签的位置 1界面上添加标签 首先在 key_widget.h 中添加成员变量 #include QLabelclass KeyWidget : public QWidget { private:QLabel* lbl; };然后在 key_widget.cpp 的构造中添加一个标签 KeyWidget::KeyWidget(QWidget* parent) : QWidget{parent} {setFocusPolicy(Qt::StrongFocus);// 添加一个 QLabellbl new QLabel(this);lbl-setText();lbl-setFrameShape(QFrame::Box);lbl-setFixedSize(100, 100);lbl-setStyleSheet(background-color: red;); }此时运行效果如下 2移动标签 只需修改上下左右按键的逻辑即可当移动到尽头则从另一端重新出现开始移动 void KeyWidget::keyPressEvent(QKeyEvent* event) {// 普通键switch ( event-key() ) {case Qt::Key_Up:qDebug() Up;lbl-move(lbl-x(), lbl-y() - 20);if ( lbl-y() lbl-height() 0 ) {lbl-move(lbl-x(), this-height());}break;case Qt::Key_Down:qDebug() Down;lbl-move(lbl-x(), lbl-y() 20);if ( lbl-y() this-height() ) {lbl-move(lbl-x(), 0);}break;case Qt::Key_Left:qDebug() Left;lbl-move(lbl-x() - 20, lbl-y());if ( lbl-x() lbl-width() 0 ) {lbl-move(this-width(), lbl-y());}break;case Qt::Key_Right:qDebug() Right;lbl-move(lbl-x() 20, lbl-y());if ( lbl-x() this-width() ) {lbl-move(0, lbl-y());}break;} }此时按键盘上的上下左右箭头效果如下
http://www.hkea.cn/news/14406997/

相关文章:

  • 怎么做网站登录站装修公司的网站怎么做
  • 电子商务网站建设的目标是什么意思wordpress 标签云 插件
  • 深圳做网站 信科便宜网站数据库出问题
  • 手机微信可以做网站吗php购物网站开发设计
  • 南阳网站营销外包公司关键词搜索名词解释
  • 自己做网站 发布视频铁岭做网站信息
  • 在哪查网站备案中国域名的管理机构是
  • 建手机网站价格thinkphp与wordpress
  • 北仑网站建设成都 直播 网站建设
  • 免费的个人空间建网站小程序建站哪家好
  • 建一个网站的手机电脑南宁网站建设产品介绍
  • 深圳网站推广网站运营解决方案
  • 开一个素材设计网站怎么做视频制作软件免费版
  • 宁津华企动力做网站的电话多少北京网站备案代理
  • wordpress注册邮件问题搜索引擎排名优化价格
  • 广东专业网站定制高端旅游网站制作
  • 建设工程信息服务平台新网站家乡网站建设策划案
  • 注册网站流程镜像网站怎么做排名
  • 做设计太依赖网站素材中国建设银行安徽省 招聘信息网站
  • php网站开发设计系统网页制作设计框架
  • 做网站设计的论文中摘要怎么写wordpress 放弃react
  • 阿里云备案成功怎么建设网站明月wordpress
  • 中国常用网站网址网站怎么做身份验证
  • 天津建设培训中心网站回老家做PHP网站
  • 菏泽哪家网站设计公司好福州seo公司
  • 网站设计公司费用wordpress视频背景
  • 高大上 网站上海青浦做网站
  • 建设银行网站登录如何转账网络营销seo是什么意思
  • ftp免费注册网站东莞自媒体运营推广公司
  • 禅城区电话黄页seo怎么做排名