又重温了一遍C++之后来看QT教程了。QT之前也看过,不过都是很长时间之前了,一直也用到。

反过来再一学,这是和学新的是一样一样的。

首先创建新项目。

1.点击NEW PROJECT

2.Applition,之后根据需求爱好,选择QT Widgets Applition,选择choose

3.设置项目名称,与保存地址。这里要注意保存地址不要使用带有中文路径的文件夹,那样会导致程序运行中断的。

创建需求:需要练习的是一个Widgets,创建出一个Widget,去掉周围标框,鼠标点击可以移动。

代码:
    //隐藏外框
this->setWindowFlags(Qt::FramelessWindowHint);  //调用Widget的成员函数setWindowFlags,传入枚举创建的Qt::FramelessWindowHint

这里需要说明的是,QT中的成员函数真是太多了,其实根本也看不过来,根据自己的需求去找,去记就可以了。可以查看QT的文档,以帮助。

之后是移动Widget:

1.分析:鼠标移动窗口,首先需要的是手表按下、移动、释放事件。用事件去中断当前进程。调用槽函数。

事件函数也是需要一层一层的去找,找到抽象类,下的prodected属性下的:

    virtual void mouseMoveEvent(QMouseEvent *event);
    virtual void mousePressEvent(QMouseEvent *event);
    virtual void mouseReleaseEvent(QMouseEvent *event);
重写虚函数。后面的计算其实也就不难了。鼠标事件需要引用头文件#include <QMouseEvent>
QPoint 创建变量 需要引用头文件#include <QPoint>
//鼠标移动事件
void Widget::mouseMoveEvent(QMouseEvent *event)
{
QWidget::mouseMoveEvent(event);//在Widget下的鼠标移动事件
    QPoint y = event->globalPos(); //鼠标的全局位置,鼠标位置对与桌面左上角的位置
    QPoint x = y-this->z;
    //鼠标到窗口左上角的位置是固定的
    //鼠标到桌面做上角的位置是y ....//Y-z就可以算出可变量x了。
    this->move(x);
}
//鼠标按下事件
void Widget::mousePressEvent(QMouseEvent *event)
{
    QWidget::mousePressEvent(event);            //在Widget下的鼠标按下事件
    QPoint y = event->globalPos(); //鼠标的全局位置,鼠标位置对与桌面左上角的位置
    QPoint x = this->geometry().topLeft(); //窗口左上角对于桌面的位置
    this-> z = y-x;  //定值, 不变的

    qDebug()<<"这是按下的事件";
}
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
QWidget::mouseReleaseEvent(event);//在Widget下的鼠标释放事件
     this->z =QPoint();        //这么写就是创建了个匿名对象。匿名对象创建之后就会自动析构的。
}

之后还有一些设计阴影框的函数,这个也不大常用,用到的话,再来写吧。

入门QT5 D1 Widget的移动的更多相关文章

  1. jsoncpp 源码编译与简单使用

    ******************************************************标准C++实现jsoncpp 源码使用编译(VC2012 MFC)(Qt5.2 Widget ...

  2. [安卓开发]App Widget开发入门指导

    本节所要讲的主要内容包括Android桌面小部件.App Widget的开发入门指导,并通过一个简单实例的形式来直观的讲解App Widget. 一.Widget .App Widget .Web A ...

  3. Qt入门之基础篇(1):Qt4及Qt5的下载与安装

    转载请注明出处:CN_Simo. 导语: Qt是一个跨平台的C++图形界面应用程序框架.它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序.Qt很容易扩展,并且 ...

  4. Kivy 中文教程 实例入门 简易画板 (Simple Paint App):1. 自定义窗口部件 (widget)

    1. 框架代码 用 PyCharm 新建一个名为 SimplePaintApp 的项目,然后新建一个名为 simple_paint_app.py 的 Python 源文件, 在代码编辑器中,输入以下框 ...

  5. QT5入门之23 -QT串口编程(转)

    QT5入门之23 -QT串口编程   QT5有专门的串口类: QSerialPort:提供访问串口的功能 QSerialPortInfo:提供系统中存在的串口的信息 具体使用方法: 1.在pro文件中 ...

  6. Qt入门之基础篇 ( 一 ) :Qt4及Qt5的下载与安装

    转载请注明出处:CN_Simo. 导语: Qt是一个跨平台的C++图形界面应用程序框架.它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序.Qt很容易扩展,并且 ...

  7. QT从入门到入土(一)——Qt5.14.2安装教程和VS2019环境配置

    引言 24岁的某天,承载着周围人的关心,一路南下.天晴心静,听着斑马,不免对未来有些彷徨.但是呢,人生总要走陌生的路,看陌生的风景,所幸可以听着不变的歌,关心自己的人就那么多.就像是对庸常生活的一次越 ...

  8. React 可视化开发工具 Shadow Widget 非正经入门(之五:指令式界面设计)

    本系列博文从 Shadow Widget 作者的视角,解释该框架的设计要点.本篇解释 Shadow Widget 中类 Vue 的控制指令,与指令式界面设计相关. 1. 指令式界面设计 Vue 与 A ...

  9. React 可视化开发工具 Shadow Widget 非正经入门(之六:markdown)

    本系列博文从 Shadow Widget 作者的视角,解释该框架的设计要点.本篇讲解 Markdown 在 Shadow Widget 中的应用. Markdown 在 Shadow Widget 中 ...

随机推荐

  1. Windows驱动开发-IRP的完成例程

    <Windows驱动开发技术详解 >331页, 在将IRP发送给底层驱动或其他驱动之前,可以对IRP设置一个完成例程,一旦底层驱动将IRP完成后,IRP完成例程立刻被处罚,通过设置完成例程 ...

  2. XModem与YModem

    XModem用在串口异步传文件: #define SOH 0x01 #define STX 0x02 #define EOT 0x04 #define ACK 0x06 #define NAK 0x1 ...

  3. thymeleaf 学习笔记(转)

    原文:http://blog.csdn.net/pdw2009/article/details/44410659 thymeleaf,我个人认为是个比较好的模板,性能也比一般的,比如freemaker ...

  4. 在win10中启动redis

    1.输入命令"redis-server.exe redis.windows.conf ",按回车键, 2.输入“redis-cli.exe -h 127.0.0.1 -p 6379 ...

  5. zookeeper和eureka的区别在哪?

    zookeeper和eureka的区别在哪?传统的关系型数据库是ACID(原子性,一致性,独立性,持久性), nosql数据库是CAP(强一致性,可用性,分区容错性),分布式系统只能3进2,三个选两个 ...

  6. 「SPOJ1487」Query on a tree III

    「SPOJ1487」Query on a tree III 传送门 把树的 \(\text{dfs}\) 序抠出来,子树的节点的编号位于一段连续区间,然后直接上建主席树区间第 \(k\) 大即可. 参 ...

  7. 设计模式课程 设计模式精讲 9-2 原型模式coding

    1 课堂演练 1.1 super.toString 作用 1.2 为什么要使用克隆方法呢 2 代码解析 2.1 代码解析1(使用原型模式之前) 2.2 代码解析2(使用原型模式默认方式(浅克隆)) 2 ...

  8. SSM 返回静态页面HTML Controller 被递归调用引起的StackOverflowError

    一 背景 最近在做工程实践,想实现这么一个效果: 前端url请求地址:localhost:8080/idevtools/search 后端返回一个静态页面HTML:search.html 按照网上说的 ...

  9. 【剑指Offer面试编程题】题目1522:包含min函数的栈--九度OJ

    题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 输入: 输入可能包含多个测试样例,输入以EOF结束. 对于每个测试案例,输入的第一行为一个整数n(1<=n&l ...

  10. 【转载】Git设置单个文件上传大小

    git单个文件默认大小是50M,超过50M,会给出warning.大于100M会无法提交: 可以通过命令,修改单个文件默认大小(以设置500M以例): git config --global http ...