Qt自定义类之自由移动的mainwindow
先要清楚,只是拖动mainwindow你是拖不动那个界面的,但是又想要设计漂亮的无标题栏的控件时,那就需要加自己的重写函数了
一开始我被这个东西给吓到了,因为在网上看了很多人的文章,但是发现我找不到他们是怎么让这个类知道event的,因为大家都是只写了几个类函数,但是就这么结束了???exm???
壮胆在QT上写下了那个函数名。结果发现那玩意是可以突然变成了斜体!!!
就像这样
这时我就意识到了,这玩意会不会是在基类上定义了模板函数的…我们就直接覆盖掉了原来的那个函数,其实内部实现的时候,会检测到东西的。只不过以前的版本(基类)中,这个函数很可能是个虚函数还是什么的,所以….(好吧,其实还有可能在于使用了event作为参数)
带着这份猜测,我写看懂了网上的很多代码之后,写下下面这段代码
mMoving : bool值,判断鼠标是否移动
mLastMousePosition: QPoint类型,记录以前的位置
思路其实很简单:
1. 当按下鼠标左键的时候,将鼠标移动给激活起来。同时记录当前位置的坐标
2. 要表现那种拖动,我们就要记录鼠标是否还在被拖动中。那只要mMoving是True我们就知道鼠标还在拖动中。否则我们肯定是会检测到鼠标松动(release)那么mMoving就被设置为了False。那也就不是移动的状态了。
3. 其实学好了这个还可以改写其他的类,这样就可以使得所有的类都可以被设置为可以拖动的状态了(当然啦,是可拖动,就拖动整个框)
void QuickSearch::mouseMoveEvent(QMouseEvent* event){if (mMoving) {this->move(this->pos() + (event->globalPos() - mLastMousePosition));mLastMousePosition = event->globalPos();}
}void QuickSearch::mousePressEvent(QMouseEvent* event){if (event->button() == Qt::LeftButton) {mMoving = true;mLastMousePosition = event->globalPos();}
}void QuickSearch::mouseReleaseEvent(QMouseEvent* event){mMoving = false;
}
Qt自定义类之自由移动的mainwindow相关推荐
- Qt自定义类使用QSS换肤
文章目录 一.前言 二.效果展示 三.具体步骤 3.1.自定义继承自QWidget的类 3.2.自定义类添加自定义属性及接口 3.3.完整的时钟控件代码 3.4.添加qss文件 3.5.切换qss 四 ...
- qt自定义类访问ui控件
比如想在类A中访问mainwindow里面的LineEdit. 在类A里面定义一个 QLineEdit *ed;然后就可以用ed->setText()这些函数. 然后在mainwindow里面实 ...
- QT-子线程或自定义类操作访问主界面UI控件的几种方法
前言 QT创建窗体工程,一般在MainWindow或Dialog类里可以直接通过ui指针访问控件,但是添加新的类后又如何访问呢,可以通过以下几种方式: 1.将ui指针公开后直接访问 (1)例如有个自己 ...
- Qt 自定义仿iphone开关按钮
在做项目时,经常用到QPushButton,这次想设计成类似iphone开关按钮的样式.通过自定义Button类继承QPushButton类,重写paintEvent方法重绘按钮图形和重写mouseP ...
- Qt 自定义信号与槽
注 对象与槽理解 //第一个参数lineEdit是激发事件对象,信号中的方法必须在对象中存在,并在对象类头文件signals下定义,//第二个参数信号,//第三个参数this是槽方法所属类的对象,且必 ...
- qt android 对话框,Qt自定义Dialog
默认对话框 Qt默认的对话框是系统自带的样式,不同版本的windows也有些许不同,如果希望风格统一的话,这时候就需要自定义一个属于自己的对话框了 系统自带 自定义样式 新建Qt设计师类 虽然是自定义 ...
- 类模板,多种类型的类模板,自定义类模板,类模板的默认类型,数组的模板实现,友元和类模板,友元函数,类模板与静态变量,类模板与普通类之间互相继承,类模板作为模板参数,类嵌套,类模板嵌套,类包装器
1.第一个最简单的类模板案例 #include "mainwindow.h" #include <QApplication> #include <QPush ...
- Qt自定义委托在QTableView中绘制控件、图片、文字
自定义委托,继承于,QStyledItemDelegate类,重载Paint()函数, 1.实现在QTableView中绘制 格式字符串 2.实现在QTableView中绘制进度条 3.实现在QTab ...
- QT QVariant类数据类型使用
QT QVariant类数据类型使用 1. QVariant 类用于封装数据成员的类型及取值等信息,该类类似于 C++ 共用体 union ,一个QVariant 对象,一次只能保存一个单一类型的值. ...
最新文章
- ​一文读懂EfficientDet
- Java 导出excel表 POI
- 快速排序实现以及时间复杂度分析
- c++ sendmessage 鼠标 坐标是相对自身吗_CAD大家都说会:这些知识不知道,你敢说会CAD吗?...
- Socket实现java服务端与AndroidApp端数据交互
- python2.7 跨文件全局变量的方法
- Linux软件安装解决方案
- C语言笔试不好应该转专业吗,你认为大学里什么学科“难学”?过来人说出几门,考试难补考更难...
- 通过shell访问hive_【HIVE】SHELL调用Hive查询
- hibernate Restrictions 用法
- 纯css+js打造返回顶部代码
- VS2015调试无法加载PDB 文件
- TortoiseGit安装中文语言包无法切换语言
- 从病毒开始聊聊那些windows下大杂烩
- 解决Android Studio不提示控件的XML属性
- 软件测试学习书籍推荐【乐搏TestPRO】
- HTB打靶日记:Bashed
- js怎么把字符串转数字
- Hystrix - 阻断器
- 日语学习资料下载 N5—N1都有
热门文章
- 用户输入和while循环
- 【前端词典】进阶必备的网络基础(下)
- Web前端开发标准规范
- Java_Shell多线程
- Android EditText禁止复制粘贴
- JQuery中的html(),text(),val()区别
- DroidPilot V2.1 手写功能特别版
- DynamicMethodHelper R2 2012-08-14 DynamicMethod ILGenerator.Emit
- 使 IDEA 的 termina l可以使用 Linux 下的终端命令
- psm倾向得分匹配法举例_互助问答第110期:分组回归样本及倾向得分匹配相关问题...