基于Qt开发PC客户端软件
Qt 软件库用来开发PC端软件非常方便,如果有一套系统,即有服务端、移动端及PC端,那么PC端最适合用Qt来开发,设计界面所见即所得。基于C++语言高效灵活。下面基于本人之前开发的一个小软件来说说。
以下是软件运行时的效果:
实现以上界面窗口需要对原始窗口做如下改造
1. 界面去掉原始标题栏
2. 标题栏自定义,背景透明和工具栏共用背景图片
3. 背景图片横向拉申,做出渐变效果
4. 自定义控制按钮(最大化、最小化、恢复、关闭)
5. 窗口套用mask变为圆角
设置窗口为无边框风格
WidgetMain::WidgetMain(QWidget *parent) :QWidget(parent),ui(new Ui::WidgetMain)
{setWindowFlags(Qt::FramelessWindowHint);setWindowIcon(QIcon(":/Images/Images/Statistics.png"));ui->setupUi(this);ui->btnRestore->hide();
移动最大化最小化控制条到右上脚去
QRect rt = ui->controlBar->geometry();ui->controlBar->move(size().width() - rt.width(),rt.top());
连接最大化、最小化的事件处理函数
connect(ui->btnClose,SIGNAL(clicked()),this,SLOT(close()));connect(ui->btnMin,SIGNAL(clicked()),this,SLOT(showMinimized()));connect(ui->btnExit,SIGNAL(clicked()),this,SLOT(close()));
设置窗口Mask为圆角
MaskWindow();
以下是该方法的定义
void WidgetMain::MaskWindow()
{//生成一张位图QBitmap objBitmap(size());//QPainter用于在位图上绘画QPainter painter(&objBitmap);//填充位图矩形框(用白色填充)painter.fillRect(rect(),Qt::white);painter.setBrush(QColor(0,0,0));//在位图上画圆角矩形(用黑色填充)painter.drawRoundedRect(this->rect(),6,6);//使用setmask过滤即可setMask(objBitmap);}
关于界面的鼠标拖拽处理,当鼠标按下时记下当前位置,在移动事件里调用移动方法move
移动一段位移距离。
void WidgetMain::mouseMoveEvent(QMouseEvent *event)
{if (event->buttons() & Qt::LeftButton) {move(event->globalPos() - m_dragPosition);event->accept();}}
void WidgetMain::mousePressEvent(QMouseEvent *event)
{if (event->button() == Qt::LeftButton) {m_dragPosition = event->globalPos() - frameGeometry().topLeft();event->accept();}}
最大化和恢复事件处理
void WidgetMain::on_btnMax_clicked()
{QRect rt = ui->controlBar->geometry();m_RestoreRect = this->geometry();QDesktopWidget * desktop = QApplication::desktop();QRect MaxRect = QRect(0,0,desktop->width(),desktop->height()); //qApp->desktop()->availableGeometry();setGeometry(MaxRect);m_bMax = true;ui->btnMax->hide();ui->btnRestore->show();ui->controlBar->move(size().width() - rt.width(),rt.top());MaskWindow();}
最大化处理 ,记录下当前窗口位置信息m_RestoreRect
,调整窗口位置大小,调整控制条位置,修改按钮状态,再执行窗口mask操作
void WidgetMain::on_btnRestore_clicked()
{QRect rt = ui->controlBar->geometry();setGeometry(m_RestoreRect);ui->btnRestore->hide();ui->btnMax->show();m_bMax = false;ui->controlBar->move(size().width() - rt.width(),rt.top());MaskWindow();
}
恢复处理 , 把上次记录的窗口位置信息在设置回来 setGeometry(m_RestoreRect);
,调整其它参数。
基于Qt开发PC客户端软件相关推荐
- 基于QT开发PC端文件加密工具
基于QT开发PC端文件加密工具 1.客户需求 某案子.该方案,通过外挂TF卡实现,本地教育资源的调取使用.按客户需求,把TF卡内的内容进行加密,并在软件中写好解密,确保资源文件只能在教育机中才能正常播 ...
- 关于PC客户端软件开发的一些思考
PC客户端(Win/Mac)开发四年的从业者来回答一波,PC客户端广义的应该指的是所有运行在个人电脑上的软件(包括Mac.Linux.Win)这三类主流的操作系统. 它的前景好坏的话,主要的对比对象, ...
- 【C++课程设计】期末大作业 - 基于Qt开发的中国象棋软件
1 题目 基于Qt的中国象棋软件开发 本博客只是简略的描述论文的大致结构.框架,以及软件开发的大致过程.有兴趣的参考原文档资料. 2总体设计与主要功能 2.1概述 中国象棋是起源于中国的一种棋,属于二 ...
- 基于Qt的桌面客户端组件化框架DT 开源啦
这个是本人在工作中基于QT开发的组件化桌面开发框架,目前打算开源出来提供给大家,节省大家的开发时间和效率,希望对大家的开发有所帮助,也欢迎提出意见和改进建议 1. 为什么开源DT框架 DT框架,本身就 ...
- PC客户端软件升级方式简史
在windows8之前,微软的Windows平台一直没有提供一个想苹果的AppStore或者Linux的包管理这样的统一软件管理工具.所以Windows下的软件安装.升级.卸载的事情一般都是软件自己去 ...
- 【QT/C++】基于QT开发的一款A-SOUL元素的视频播放器(附源码)
[QT/C++]基于QT开发的一款关于A-SOUL的视频播放器(附源码) 前言 一.软件使用说明 1.运行软件的界面如下 2.操作软件的步骤 二.软件设计说明 1.UI界面的设计 2.主代码中的部分函 ...
- 基于嵌入式linux电子相册设计,用于LINUX或者嵌入式LINUX的电子相册程序,基于QT开发...
用于LINUX或者嵌入式LINUX的电子相册程序,基于QT开发,包含源代码和编译好的可执行程序 linux_project\album\album.pro .............\.....\al ...
- 基于QT开发的多媒体播放器
基于QT开发的多媒体播放器 描述: 使用QT软件设计一个多媒体播放器,实现视频及音乐的播放,暂停,快进,快退,音量的调整. 歌词的实时显示和视频全屏播放等基本功能. 功能: 1.音乐系统:提供播放.暂 ...
- Qt开发上位机软件建立经典蓝牙通讯
Qt开发上位机软件建立经典蓝牙通讯 之前做了一个具有经典蓝牙通讯功能的Windows上位机软件,在网上学习了相关博客以及参考了官方经典蓝牙例程之后,总结出了使用Qt建立经典蓝牙通讯的步骤,附带相关源码 ...
最新文章
- Tensorflow—CNN应用于MNIST数据集分类
- php unset 多可以什么_php unset()销毁单个或多个变量
- android studio如何编译测试,Android Studio 进行单元测试完整教程
- Python 并发编程:PoolExecutor 篇
- matlab frontier,使用Matlab计算Efficient frontier
- NHibernate(一) 转自止于至善
- /xiaolei.php|martin_经典开源PHP项目
- 微信小程序登录流程 微信登录
- vue接口总是请求超时_解决在vue中axios请求超时的问题
- gif动态图如何制作?
- mysql和pg数据库表备份及还原
- 基于RFM模型的用户价值分析——PythonTableau
- Hotmail邮箱的POP和SMTP配置
- 什么是java集合,java集合有几类?
- 关于JavaScript中的date和java中的date差14小时问题
- C++ VS2019 缓存区溢出和读取数据无效的警告
- Excel 数字按长度补0,并转换为文本
- 如何通过喂养菌群产生丁酸调节人体健康
- toastr的介绍和使用
- Java主人喂猫吃鱼的实验总结,小猫吃鱼的作文4篇