【Qt编程】基于Qt的词典开发系列<五>--无边框窗口的拖动
来源:互联网 发布:西门子编程电缆价格 编辑:程序博客网 时间:2024/04/30 13:55
在上一篇文章中,我们讲述了如何进行无边框窗口的缩放与拖动,而在一些情况下,我们的窗口只需要进行拖动也不需要改变其大小,比如:QQ的登录窗口。本来在上一篇文章中已经讲述了如何进行窗口的拖动,但是却与窗口的缩放相关的程序放在一起,下面专门单独分离出来。
窗口的拖放只涉及到鼠标事件:按下操作、释放操作和移动操作,因此只需要重写这三个函数。由于程序比较简单,并且注释也比较详细,就不作过多介绍。新建一个基类为QWidget的Qt Gui应用程序,只需修改widget.h和widget.cpp文件如下:
1、widget.h文件
#ifndef WIDGET_H#define WIDGET_H#include <QWidget>//注意我使用的是Qt5,Qt4与Qt5的区别可以参考http://qt-project.org/wiki/Transition_from_Qt_4.x_to_Qt5#include<QMouseEvent>namespace Ui {class Widget;}class Widget : public QWidget{ Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); QPoint move_point; //移动的距离 bool mouse_press; //鼠标按下 //鼠标按下事件 void mousePressEvent(QMouseEvent *event); //鼠标释放事件 void mouseReleaseEvent(QMouseEvent *event); //鼠标移动事件 void mouseMoveEvent(QMouseEvent *event); private: Ui::Widget *ui;};#endif // WIDGET_H2、widget.cpp文件
#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); this->setMouseTracking(false); setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);//设置主窗口无边框}Widget::~Widget(){ delete ui;}void Widget::mousePressEvent(QMouseEvent *event){ if(event->button() == Qt::LeftButton) { this->setMouseTracking(true); mouse_press = true; //鼠标相对于窗体的位置(或者使用event->globalPos() - this->pos()) move_point = event->pos();; }}void Widget::mouseReleaseEvent(QMouseEvent *event){ //设置鼠标为未被按下 mouse_press = false;}void Widget::mouseMoveEvent(QMouseEvent *event){ //若鼠标左键被按下 // qDebug()<<"mouse_press="<<event->globalPos(); if(mouse_press) { //鼠标相对于屏幕的位置 QPoint move_pos = event->globalPos(); //移动主窗体位置 this->move(move_pos - move_point); }}
基于Qt的词典开发系列
- 词典框架设计及成品展示
- 本地词典的设计
- 开始菜单的设计
- 无边框窗口的缩放与拖动
- 无边框窗口的拖动
- 界面美化设计
- 调用网络API
- 用户登录及API调用的实现
- JSON数据解析
- 国际音标的显示
- 系统托盘的显示
- 调用讲述人
- 音频播放
- 自动补全功能
- HTML特殊字符及正则表达式
- 后序
作品下载地址(发布版):http://download.csdn.net/detail/tengweitw/8548767
作品下载地址(绿色版):http://download.csdn.net/detail/tengweitw/8830495
源码下载地址:http://download.csdn.net/detail/tengweitw/8830503
原文:http://blog.csdn.net/tengweitw/article/details/38817595
作者:nineheadedbird
0 0
- 【Qt编程】基于Qt的词典开发系列<五>--无边框窗口的拖动
- 【Qt编程】基于Qt的词典开发系列<四>--无边框窗口的缩放与拖动
- 【Qt编程】无边框窗口的缩放与拖动
- 【Qt编程】基于Qt的词典开发系列--后序
- 【Qt编程】基于Qt的词典开发系列<二>--本地词典的设计
- 【Qt编程】基于Qt的词典开发系列<一>--词典框架设计及成品展示
- QT无边框窗口拖动
- 【Qt编程】基于Qt的词典开发系列<十>--国际音标的显示
- 【Qt编程】基于Qt的词典开发系列<十一>系统托盘的显示
- 【Qt编程】基于Qt的词典开发系列<三>--开始菜单的设计
- 【Qt编程】基于Qt的词典开发系列<八>--用户登录及API调用的实现
- 【Qt编程】基于Qt的词典开发系列<十二>调用讲述人
- 【Qt编程】基于Qt的词典开发系列<十三>音频播放
- 【Qt编程】基于Qt的词典开发系列<十四>自动补全功能
- 【Qt编程】基于Qt的词典开发系列<十五>html特殊字符及正则表达式
- 【Qt编程】基于Qt的词典开发系列<六>--界面美化设计
- 【Qt编程】基于Qt的词典开发系列<七>--调用网络API
- 【Qt编程】基于Qt的词典开发系列<九>--JSON数据解析
- 在shell中将内容打印并且存储到日志文件
- 三十 我在软件园的那些日子里
- 55分钟学会正则表达式
- C/C++程序员必须熟练应用的开源项目
- python升级带来的yum异常
- 【Qt编程】基于Qt的词典开发系列<五>--无边框窗口的拖动
- jQuery Validation Engine 表单验证
- mac上安装xlrd
- Hello ko
- 三十一 我在软件园的那些日子里
- android背景选择器selector用法汇总
- TortoiseSVN客户端重新设置用户名和密码
- Linked List Cycle
- 命令行压缩解压