Qt浅谈之窗体缩放(仅增加测试代码)

2024-03-11 10:18

本文主要是介绍Qt浅谈之窗体缩放(仅增加测试代码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、简介

        在csdn上看到了一篇窗体动态缩放的文章,觉得很有意思,在作者的代码上加上了测试程序,并把所有代码放在csdn上供下载。程序运行的效果:

二、详解

1、测试代码(完整代码csdn:http://download.csdn.net/detail/taiyang1987912/9434679)

(1)widgetscale.h
#ifndef RIGHTPOP_H
#define RIGHTPOP_H#include "epushbutton.h"
#include <QtGui>class WidgetScale : public QWidget
{Q_OBJECTpublic:WidgetScale(QWidget *parent = 0);~WidgetScale();protected:void paintEvent(QPaintEvent *event);void resizeEvent(QResizeEvent * event);private:QPixmap backGroundPix;EPushButton *closeButton;
};#endif // RIGHTPOP_H
(2)widgetscale.cpp
#include "widgetscale.h"
#include "framelesshelper.h"WidgetScale::WidgetScale(QWidget *parent): QWidget(parent, Qt::FramelessWindowHint)
{resize(300, 200);backGroundPix.load(":/background.png");backGroundPix = backGroundPix.scaled(width(), height(), Qt::KeepAspectRatio, Qt::SmoothTransformation);closeButton = new EPushButton(this);closeButton->setPixName(":/close");closeButton->setToolTip(tr("close"));connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));//this指的是要处理的窗体FramelessHelper *pHelper = new FramelessHelper(this);pHelper->activateOn(this);  //激活当前窗体pHelper->setTitleHeight(30);  //设置窗体的标题栏高度pHelper->setWidgetMovable(true);  //设置窗体可移动pHelper->setWidgetResizable(true);  //设置窗体可缩放pHelper->setRubberBandOnMove(true);  //设置橡皮筋效果-可移动pHelper->setRubberBandOnResize(true);  //设置橡皮筋效果-可缩放move((QApplication::desktop()->width() - width())/2,  (QApplication::desktop()->height() - height())/2);
}WidgetScale::~WidgetScale()
{}void WidgetScale::paintEvent(QPaintEvent *event)
{QPainter painter(this);painter.drawPixmap(0, 0, width(), height(), backGroundPix);painter.setFont(QFont("arial", 10, QFont::Bold));painter.setPen(QColor("#FFFFFF"));painter.drawText(QRectF(5, 5, 100, 35), tr("Happy Coder"));painter.setPen(Qt::NoPen);painter.setBrush(QColor("#2EB49E"));painter.drawRect(QRectF(0, 30, width(), height() - 30));QWidget::paintEvent(event);
}void WidgetScale::resizeEvent(QResizeEvent *event)
{closeButton->move(width() - 27, 0);QWidget::resizeEvent(event);
}

三、总结

(1)代码中还有很多自己不懂的地方,待以后慢慢体会,核心代码参考:http://blog.csdn.net/liang19890820/article/details/50557240。
(2)若有问题或建议,请留言,在此感谢!

这篇关于Qt浅谈之窗体缩放(仅增加测试代码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/797518

相关文章

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

Qt之QMessageBox的具体使用

《Qt之QMessageBox的具体使用》本文介绍Qt中QMessageBox类的使用,用于弹出提示、警告、错误等模态对话框,具有一定的参考价值,感兴趣的可以了解一下... 目录1.引言2.简单介绍3.常见函数4.按钮类型(QMessage::StandardButton)5.分步骤实现弹窗6.总结1.引言

Qt中Qfile类的使用

《Qt中Qfile类的使用》很多应用程序都具备操作文件的能力,包括对文件进行写入和读取,创建和删除文件,本文主要介绍了Qt中Qfile类的使用,具有一定的参考价值,感兴趣的可以了解一下... 目录1.引言2.QFile文件操作3.演示示例3.1实验一3.2实验二【演示 QFile 读写二进制文件的过程】4.

CentOS7增加Swap空间的两种方法

《CentOS7增加Swap空间的两种方法》当服务器物理内存不足时,增加Swap空间可以作为虚拟内存使用,帮助系统处理内存压力,本文给大家介绍了CentOS7增加Swap空间的两种方法:创建新的Swa... 目录在Centos 7上增加Swap空间的方法方法一:创建新的Swap文件(推荐)方法二:调整Sww