入门QT5 D1 Widget的移动
又重温了一遍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的移动的更多相关文章
- jsoncpp 源码编译与简单使用
******************************************************标准C++实现jsoncpp 源码使用编译(VC2012 MFC)(Qt5.2 Widget ...
- [安卓开发]App Widget开发入门指导
本节所要讲的主要内容包括Android桌面小部件.App Widget的开发入门指导,并通过一个简单实例的形式来直观的讲解App Widget. 一.Widget .App Widget .Web A ...
- Qt入门之基础篇(1):Qt4及Qt5的下载与安装
转载请注明出处:CN_Simo. 导语: Qt是一个跨平台的C++图形界面应用程序框架.它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序.Qt很容易扩展,并且 ...
- Kivy 中文教程 实例入门 简易画板 (Simple Paint App):1. 自定义窗口部件 (widget)
1. 框架代码 用 PyCharm 新建一个名为 SimplePaintApp 的项目,然后新建一个名为 simple_paint_app.py 的 Python 源文件, 在代码编辑器中,输入以下框 ...
- QT5入门之23 -QT串口编程(转)
QT5入门之23 -QT串口编程 QT5有专门的串口类: QSerialPort:提供访问串口的功能 QSerialPortInfo:提供系统中存在的串口的信息 具体使用方法: 1.在pro文件中 ...
- Qt入门之基础篇 ( 一 ) :Qt4及Qt5的下载与安装
转载请注明出处:CN_Simo. 导语: Qt是一个跨平台的C++图形界面应用程序框架.它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序.Qt很容易扩展,并且 ...
- QT从入门到入土(一)——Qt5.14.2安装教程和VS2019环境配置
引言 24岁的某天,承载着周围人的关心,一路南下.天晴心静,听着斑马,不免对未来有些彷徨.但是呢,人生总要走陌生的路,看陌生的风景,所幸可以听着不变的歌,关心自己的人就那么多.就像是对庸常生活的一次越 ...
- React 可视化开发工具 Shadow Widget 非正经入门(之五:指令式界面设计)
本系列博文从 Shadow Widget 作者的视角,解释该框架的设计要点.本篇解释 Shadow Widget 中类 Vue 的控制指令,与指令式界面设计相关. 1. 指令式界面设计 Vue 与 A ...
- React 可视化开发工具 Shadow Widget 非正经入门(之六:markdown)
本系列博文从 Shadow Widget 作者的视角,解释该框架的设计要点.本篇讲解 Markdown 在 Shadow Widget 中的应用. Markdown 在 Shadow Widget 中 ...
随机推荐
- ES5 Object.assign 低版本浏览器内核兼容问题
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { ...
- virtual column make sqlserver using function index
In sqlserver, it is impossible that if we want to create an function index. Doesn`t means we can not ...
- web前端面试第一次[addEventListenr();绑定事件]
//当一个元素同时处理多个函数,这里使用按钮 //addEventListener(string类型,处理函数,boolean); <input type="button" ...
- 科软-信息安全实验1-ICMP重定向
目录 一 前言 二 Talk is cheap, show me the code 三 效果演示 四 遇到的问题&解决 一 前言 文章不讲解理论知识哈,想学习理论知识的,认真听课
- 纪录片 - Why Are We Fat?(全3集)
1. 传送门:https://www.bilibili.com/video/av13977351?spm_id_from=333.338.__bofqi.16 2. 笔记 第一型糖尿病是天生的,第二型 ...
- 初探网络流:dinic/EK算法学习笔记
前记 这些是初一暑假的事: "都快初二了,连网络流都不会,你好菜啊!!!" from 某机房大佬 to 蒟蒻我. flag:--NOIP后要学网络流 咕咕咕------------ ...
- markdown基本语法教程
标题 一级标题 二级标题 三级标题 以此类推,总共六级标题,建议在警号后面加一个空格,这是最标准的markdown语法 列表 在markdown下: 列表的显示只需要在文字前加上-.+或*即可变为无序 ...
- Prometheus组件
Prometheus组件 上一小节,通过部署Node Exporter我们成功的获取到了当前主机的资源使用情况.接下来我们将从Prometheus的架构角度详细介绍Prometheus生态中的各个组件 ...
- Subtitles
1. 字幕Subtitles 2. 字幕类型 3. 字幕格式 4. 常用文本字幕 5. 字幕编辑器 6. 字幕编辑器比较 1. 字幕Subtitles https://en.wikipedia.org ...
- ng之邮箱校验
$scope.sendMail = function () { // console.log($scope.inputValue.inputEmail); //校验邮箱格式是否正确 if (!$sco ...