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

中国建设银行官网站u盾证书沈阳人流费用

中国建设银行官网站u盾证书,沈阳人流费用,电商网站建站开发语言,pc网站制作公司本节对应的视频讲解:B_站_链_接 【QT开发笔记-基础篇】 第4章 事件 4.7 拖动事件 本章要实现的整体效果如下: QEvent::DragEnter ​ 当拖动文件进入到窗口/控件中时,触发该事件,它对应的子类是 QDragEnterEvent QEvent::DragLe…

本节对应的视频讲解:B_站_链_接

【QT开发笔记-基础篇】 第4章 事件 4.7 拖动事件


本章要实现的整体效果如下:

整体效果

QEvent::DragEnter

​ 当拖动文件进入到窗口/控件中时,触发该事件,它对应的子类是 QDragEnterEvent

QEvent::DragLeave

​ 当拖动文件离开窗口/控件时,触发该事件,它对应的子类是 QDragLeaveEvent

QEvent::DragMove

​ 当拖动文件在窗口/控件中移动时,触发该事件,它对应的子类是 QDragMoveEvent

QEvent::Drop

​ 当拖动文件在窗口/控件中释放时,触发该事件,它对应的子类是 QDropEvent

本节通过一个向 QTextEdit 中拖放文本文件的案例,来讲解拖放事件


1. 自定义控件 TextEditX

自定义一个标签控件 TextEditX,让它继承自 QTextEdit,然后重写拖放相关的函数。

1.1 添加自定义控件类 TextEditX

首先,在左侧项目文件名上右键,然后选择 “添加新文件”,选择 “C++ Class”,如下:

添加类

新建类文件信息如下:

文件信息


然后,把父类修改为 QTextEdit

来到 texteditx.h 将父类由 QWidget 修改为 QTextEdit,如下:

#include <QTextEdit>class TextEditX : public QTextEdit
{// ...
};

来到 texteditx.cpp 将父类由 QWidget 修改为 QTextEdit,如下:

#include "texteditx.h"TextEditX::TextEditX(QWidget* parent) : QTextEdit{parent}
{
}

1.2 重写拖放函数

首先,来到 textedit.h,声明这4个拖放函数:

#include <QDragEnterEvent>
#include <QDragLeaveEvent>
#include <QDragMoveEvent>
#include <QDropEvent>class TextEditX : public QTextEdit
{
protected:void dragEnterEvent(QDragEnterEvent* event);void dragMoveEvent(QDragMoveEvent* event);void dragLeaveEvent(QDragLeaveEvent* event);void dropEvent(QDropEvent* event);
};

然后,来到 textedit.cpp 实现这4个函数(这里仅仅是加一句打印):

TextEditX::TextEditX(QWidget* parent) : QTextEdit{parent}
{this->setAcceptDrops(true);
}void TextEditX::dragEnterEvent(QDragEnterEvent* event)
{qDebug() << "dragEnterEvent";// 判断是正常的文件,表明用户可以在这个窗口部件上拖放对象。// 默认情况下,窗口部件是不接受拖动的。Qt会自动改变光标来向用户说明这个窗口部件是不是有效的放下点event->acceptProposedAction();
}void TextEditX::dragMoveEvent(QDragMoveEvent* event)
{qDebug() << "dragMoveEvent";
}void TextEditX::dragLeaveEvent(QDragLeaveEvent* event)
{qDebug() << "dragLeaveEvent";
}void TextEditX::dropEvent(QDropEvent* event)
{qDebug() << "dropEvent";
}

1.3 将 TextEditX 显示到界面

来到 drag_widget.cpp,在构造函数中添加 TextEditX 控件,如下:

#include "texteditx.h"DragWidget::DragWidget(QWidget* parent) : QWidget{parent}
{QVBoxLayout* verticalLayout = new QVBoxLayout(this);verticalLayout->setSpacing(0);verticalLayout->setContentsMargins(10, 10, 10, 10);// 添加一个TextEditTextEditX* textEdit = new TextEditX(this);textEdit->setPlaceholderText("支持文件拖放的方式,来打开文件");verticalLayout->addWidget(textEdit);
}

此时运行程序,效果如下:

添加到界面


2. 实现打开文件功能

只需修改 dropEvent() 函数,如下:

void TextEditX::dropEvent(QDropEvent* event)
{qDebug() << "dropEvent";QList<QUrl> urls = event->mimeData()->urls();if ( urls.isEmpty() ) {return;}QString fileName = urls.first().toLocalFile();qDebug() << urls.first() << " : " << fileName;QFile file(fileName);if ( file.open(QIODevice::ReadOnly) ) {setPlainText(file.readAll());}
}

拖放一个桌面文件到 TextEditX 中,效果如下:

文件打开功能


3. 实现鼠标滚轮放大字体

以上在 TextEditX 中显示的文本,字体大小固定,接下来实现,通过鼠标滚轮来设置字体大小

首先,在 texteditx.h 中,声明鼠标滚轮滚动的事件 wheelEvent(),如下:

class TextEditX : public QTextEdit
{
protected:void wheelEvent(QWheelEvent* e);
};

然后,实现 wheelEvent() 函数:

#include <QApplication>void TextEditX::wheelEvent(QWheelEvent* e)
{if ( QApplication::keyboardModifiers() == Qt::ControlModifier ) {  // ctrl键的判断// zoomIn/zoomOut可以直接修改字体大小if ( e->delta() > 0 ) {  // 滚轮远离使用者, 进行放大this->zoomIn();} else {this->zoomOut();  // 进行缩小}} else {QTextEdit::wheelEvent(e);  // 调用父类的,否则无法实现文本的上下滚动。}
}

此时,运行效果如下:

最终效果

http://www.yayakq.cn/news/22241/

相关文章:

  • 快速建站公司南通seo招聘
  • 为什么网站后台google登陆不了 firefox可以家里的电脑怎样做网站赚钱
  • 网站制作公司排行榜如何在wordpress底部添加一个留言
  • 永久免费个人网站wordpress使用人数
  • 网站平台建设心得公司企业邮箱注册申请
  • 口碑好的定制网站建设提供商漳浦网站建设
  • 贵州茅台酒股份有限公司网站wordpress 调用单页
  • 网站商城微信支付接口网站制作运营
  • 网站公司设计公司wordpress 去掉版权
  • 网站建设丶金手指花总14多用户商城系统下载
  • 网站空间和数据库的关系公司做网站还是做阿里好呢
  • 网站怎么做 流程图市住房城乡建设网站
  • 灵璧网站建设湖南长沙最新情况
  • 高清免费素材网站天津 企业网站建设
  • 七星彩网站开发公司邢台做网站可信赖
  • 网站开发人员有哪些手机网站宽度是多少
  • 怎样建立个人的网站什么网站可以自己接工程做预算
  • 小微宝安网站建设佛山小程序开发公司
  • php 视频网站开发网站建设时间怎样看
  • 做免费网站推广开头语西南交通建设集团股份有限公司网站
  • 广东网站设计有名的公司优化用户体验
  • wordpress主题的网站模板爱站网长尾词挖掘
  • 网站管理设置营销网站建站公司
  • 建设交通人才网站an网站建设
  • 三型布局的网站中国互联网络信息中心网站
  • 网站开发设计需求全球速卖通中文官网
  • 网站宣传方法开发公司资料员岗位职责及工作内容
  • 个人网站建设存在哪些问题微信客户管理系统平台
  • 网站推广专家东莞招聘网站有哪些
  • 大型网站建设开发互联网媒体广告公司