博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt浅谈之窗体缩放(仅增加测试代码)
阅读量:4179 次
发布时间:2019-05-26

本文共 2201 字,大约阅读时间需要 7 分钟。

一、简介

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

二、详解

1、测试代码(完整代码csdn:)

(1)widgetscale.h
#ifndef RIGHTPOP_H#define RIGHTPOP_H#include "epushbutton.h"#include 
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)若有问题或建议,请留言,在此感谢!

你可能感兴趣的文章
RSAUtils工具类
查看>>
常用的集合之间的转换
查看>>
list复制 浅拷贝和深拷贝
查看>>
查找出一个字符串不重复字符的最大长度
查看>>
2的次幂
查看>>
3的次幂
查看>>
求一个数的平方根
查看>>
mysql查看死锁和解锁
查看>>
对synchronized的使用一点浅解
查看>>
Intellij IDEA 自定义 LIVE TEMPLATES
查看>>
Gennerate Unique 10 digit ID
查看>>
ConcurrentHashSet的使用
查看>>
Java复制文件的4种方式
查看>>
datatables对某列进行求和
查看>>
记录切换openjdk遇到的一个坑
查看>>
Lombok---@EqualsAndHashCode(callSuper = true)的使用
查看>>
Java实体映射工具 MapStruct的简单应用
查看>>
IDEA中的Git操作
查看>>
sharding-jdbc配置主从数据库
查看>>
请求https跳过证书认证
查看>>