Qt坐标系以及自定义可移动控件
1、效果
黑色这个控件是自定义的,可以在界面拖动
2、新建控件的Qt类,父类是QWidget,带ui的,Control.h
#ifndef CONTROL_H #define CONTROL_H #include <QWidget>namespace Ui { class Control; }class Control : public QWidget {Q_OBJECTpublic:explicit Control(QWidget *parent = 0);~Control();int A1X,A1Y;int A2X,A2Y;int pressX,pressY;int curentX,curentY; protected:void paintEvent(QPaintEvent *event);void mouseMoveEvent(QMouseEvent *event);void mousePressEvent(QMouseEvent *event);private:Ui::Control *ui; };#endif // CONTROL_H
3、Control.cpp
#include "control.h" #include "ui_control.h" #include <QDebug> #include <QMouseEvent> Control::Control(QWidget *parent) :QWidget(parent),ui(new Ui::Control) {ui->setupUi(this);A2X = this->pos().x();A2Y = this->pos().y(); }Control::~Control() {delete ui; }void Control::paintEvent(QPaintEvent *event) { #if 1QPalette palette(this->palette());palette.setColor(QPalette::Background, Qt::black);this->setAutoFillBackground(true);this->setPalette(palette); #endifif(A2X==0 && A2Y==0){return;}this->move(A2X,A2Y); }void Control::mouseMoveEvent(QMouseEvent *event) {if (event->buttons() == Qt::LeftButton) // 这个if判断只是为了保证是按压鼠标左键移动产生窗体拖动效果 { #if 0curentX = event->x();//鼠标点相对当前widget的位置curentY = event->y(); #endifcurentX = event->globalX();//鼠标点相对整个显示器的位置curentY = event->globalY();A2X = A1X+curentX-pressX;A2Y = A1Y+curentY-pressY; #if 0qDebug()<< "mouseMoveEvent:" << curentX << curentY;qDebug()<< "A2XY:" << A2X << A2Y; #endifupdate();} }void Control::mousePressEvent(QMouseEvent *event) {pressX = event->globalX();//鼠标点相对整个显示器的位置pressY = event->globalY();A1X = this->x();//widget左上角相对程序的位置A1Y = this->y(); #if 0int a = event->x();//鼠标点相对当前widget的位置int b = event->y();int c = this->geometry().x();//widget左上角相对程序的位置int d = this->geometry().y();qDebug()<< "mousePressEvent:" << pressX << pressY;qDebug()<< "A1XY:" << A1X << A1Y;qDebug()<< "A1xy:" << A1X << A1Y;qDebug()<< "ab:" << a << b;qDebug()<< "cd:" << c << d; #endif }
4、在main.ui里拖入widget控件,提升为Control,运行,ok
转载于:https://www.cnblogs.com/judes/p/11016771.html
Qt坐标系以及自定义可移动控件相关推荐
- Qt基于QGraphicsObject自定义图元并实现简单的动画
文章目录 Qt基于QGraphicsObject自定义图元并实现简单的动画 举例; Qt基于QGraphicsObject自定义图元并实现简单的动画 Qt 图形的绘制 可以是QPainter方法直接绘 ...
- 为Qt Designer创建自定义Widgets小部件
为Qt Designer创建自定义Widgets小部件 为Qt Designer创建自定义Widgets小部件 入门 在注释domXml()功能 插件要求 创建行为良好的小部件 编译和安装插件 一个简 ...
- Qt Creator创建自定义效果和材质
Qt Creator创建自定义效果和材质 创建自定义效果和材质 创建自定义效果 创建自定义材料 创建着色器文件 创建自定义效果和材质 " Qt Quick 3D效果"和" ...
- Qt Creator使用自定义着色器
Qt Creator使用自定义着色器 使用自定义着色器 可用的自定义着色器实用程序 可用的自定义着色器命令 使用自定义着色器 您可以使用Qt Quick 3D着色器实用程序和命令来创建自己的效果和材质 ...
- Qt Creator使用自定义字体
Qt Creator使用自定义字体 使用自定义字体 使用自定义字体 为了使UI在设备上预览时使用自定义字体,必须将字体导入项目文件夹.Qt Design Studio会将它们与您的UI一起部署到设备上 ...
- 【QT 5 设置自定义标题栏+学习:《QT实现鼠标拖动调整窗口大小》+基础样例】
[QT 5 设置自定义标题栏+学习:<QT实现鼠标拖动调整窗口大小>+基础样例] 1.说明 2.实验环境 3.实验目的 4.参考文章 5.实验步骤 (1)下载代码,运行没有错误. (2)加 ...
- 05黑马QT笔记之自定义槽函数
05黑马QT笔记之自定义槽函数 1 自定义槽函数其实不难,没什么好说的,注意以下几点便可. 自定义参函数注意事项(Qt5): * 1)自定义槽函数可以是类成员函数(用得最多).全局普通函数.静态函数. ...
- Qt在win10自定义标题栏,应用主题颜色到标题栏
Qt在win10自定义标题栏,应用主题颜色到标题栏 前言 先看效果 关键点 QtWin 注册表获取是否应用了颜色到标题栏 代码 头文件:captionwidget.h 源文件:captionwidge ...
- qt designer使用自定义ui控件
文章目录 qt designer使用自定义ui控件 使用须知 插件应该存放的位置 Qt creator内置的designer 独立的designer 构建一个可使用的插件 Qt creator内置的d ...
最新文章
- python【力扣LeetCode算法题库】46- 全排列
- Aooms_基于SpringCloud的微服务基础开发平台实战_002_工程构建
- [Xcode 实际操作]六、媒体与动画-(6)使用UIBlurEffect给图片添加模糊效果
- bin文件怎么转换成文本文档_Python脚本4:根据txt文本,批量创建文件夹
- 缓存,确实很香,却也很受伤!
- JVM快速调优手册v1.0
- android如何用代码实现界面ui
- AutoCAD VBA创建椭圆和样条曲线
- Hadoop入门之命令参考
- 中国银行 网银 控件造成 IE8 崩溃的解决办法
- linux终端清除命令,ubuntu清除命令行记录
- uoj132/BZOJ4200/洛谷P2304 [Noi2015]小园丁与老司机 【dp + 带上下界网络流】
- [iOS开发]Instruments工具的学习
- c语言转义字符 pdf,C语言教程讲义 pdf版
- mysql informix_INFORMIX数据库函数
- 《数学之美》-吴军 读书笔记
- 【前端】HTML标签(下)
- 如何让电脑同时连接内外网?
- 微信公众号里放XLS链接教程
- javaweb登录验证码的实现