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

做外贸比较好用的网站有哪些牡丹江市住房和城乡建设局网站

做外贸比较好用的网站有哪些,牡丹江市住房和城乡建设局网站,中山开发公司,北京东城网站建设本章要实现的整体效果如下: QEvent::KeyPress ​ 键盘按下时,触发该事件,它对应的子类是 QKeyEvent QEvent::KeyRelease ​ 键盘抬起时,触发该事件,它对应的子类是 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(); // QFlags<Qt::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 <QLabel>class 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.yayakq.cn/news/748091/

相关文章:

  • 南昌的网站推广公司赣州营销网站建设
  • 论坛网站文本抓取怎么做开发公司资质哪里查
  • 建站工具有哪些cms网站seo优化怎么做
  • 宁波自适应网站建设优化建站弹幕网站开发
  • 微信公众平台绑定网站个人做外贸网站平台
  • 编程 朋友 做网站优化seo技术
  • 公司网站包含哪些内容网上开店电商平台有哪些
  • 没有公司个人可以做网站卖东西吗快速优化网站排名搜索
  • 做网站公司 陕西渭南建设银行企业网银网站打不开
  • ipv6改造 网站怎么做禄丰网站建设
  • 上传的网站打不开 index.asp个人开小公司的流程
  • 怎样做网络推广为什么要做网络推广关键词查询优化
  • 深圳微信网站建设cad图纸免费下载网站
  • 仿制别人的竞价网站做竞价犯法吗如何更换网站后台
  • 北京建设部网站网站建设制作开发
  • 成都网站建设司建设一个网站需要哪些软硬件条件
  • 网站建设达到什么水平展览展示设计网站
  • 网站管理助手4.0 mysql株洲制作网站
  • 如何撰写网站建设方案小说网站个人可以做吗
  • 网站淘宝推广怎么做富海人才招聘网官网
  • 外贸出口网站建设电商运营是干嘛的
  • 全屏产品网站宽屏大气网站源码
  • 如何查看网站有没有收录共青城网站建设公司
  • APP客户端网站建设wordpress 文章标题列表
  • 企业品牌类网站大学学科建设网站
  • 海西高端网站建设价格浦东新区网站优化推广
  • wordpress 菜单栏阜阳网站优化
  • 中国纪检监察报记者电话资源企业网站排名优化价格
  • wordpress 企业网站模板国内企业网站设计公司
  • 延边延吉网站建设提升wordpress速度