Qt实现九宫图类控件
<1>. 头文件(类声明)
class CPreviewWidge : public QWidget
{
Q_OBJECT
public:
CPreviewWidge( const QString &strPath, QWidget *parent = );
~CPreviewWidge(); QSize sizeHint()const; protected:
void paintEvent(QPaintEvent *e); //九宫图重绘函数 private:
QImage m_imgLTop; //九宫图图片左上
QImage m_imgLCur; //九宫图图片左中
QImage m_imgLBut; //九宫图图片左下 QImage m_imgCTop; //九宫图图片中上
QImage m_imgCCur; //九宫图图片中中
QImage m_imgCBut; //九宫图图片中下 QImage m_imgRTop; //九宫图图片右上
QImage m_imgRCur; //九宫图图片右中
QImage m_imgRBut; //九宫图图片右下
};
<2>. cpp文件(类定义)
CPreviewWidge::CPreviewWidge( const QString &strPath, QWidget *parent ) //传参:九宫图中上图片路径和控件父类对象
: QWidget( parent )
{
int iLeft = strPath.lastIndexOf( "_" );
QString strLeftPath = strPath.left( iLeft ); m_imgLTop = QImage( strLeftPath + "_ltop.png" );
m_imgLCur = QImage( strLeftPath + "_lcur.png" );
m_imgLBut = QImage( strLeftPath + "_lbot.png" ); m_imgCTop = QImage( strLeftPath + "_ctop.png" );
m_imgCCur = QImage( strLeftPath + "_ccur.png" );
m_imgCBut = QImage( strLeftPath + "_cbot.png" ); m_imgRTop = QImage( strLeftPath + "_rtop.png" );
m_imgRCur = QImage( strLeftPath + "_rcur.png" );
m_imgRBut = QImage( strLeftPath + "_rbot.png" );
} CPreviewWidge::~CPreviewWidge()
{
} QSize CPreviewWidge::sizeHint() const
{
int iHeight = m_imgLTop.height() + m_imgLCur.height() + m_imgLBut.height();
int iWidth = m_imgLTop.width() + m_imgCTop.width() + m_imgRTop.width(); return QSize( iWidth, iHeight );
} void CPreviewWidge::paintEvent ( QPaintEvent* e )
{
QWidget::paintEvent( e ); QPainter painter( this );
QRect r = rect(); painter.drawImage( r.topLeft().x(), r.topLeft().y(), m_imgLTop );
painter.drawImage( r.topRight().x() - m_imgRTop.width(), r.topRight().y(), m_imgRTop );
painter.drawImage( r.bottomLeft().x(), r.bottomLeft().y() - m_imgLBut.height(), m_imgLBut );
painter.drawImage( r.bottomRight().x() - m_imgRBut.width(), r.bottomRight().y() - m_imgRBut.height(), m_imgRBut ); QRect rectLCut( r.topLeft().x(), r.topLeft().y() + m_imgLTop.height(),
m_imgLCur.width(), ( r.bottomLeft().y() - r.topLeft().y() ) - m_imgLTop.height() - m_imgLBut.height() );
painter.drawImage( rectLCut, m_imgLCur ); QRect rectRCut( r.topRight().x() - m_imgRTop.width(), r.topRight().y() + m_imgRTop.height(),
m_imgRCur.width(), ( r.bottomLeft().y() - r.topLeft().y() ) - m_imgLTop.height() - m_imgLBut.height() );
painter.drawImage( rectRCut, m_imgRCur ); QRect rectCTop( r.topLeft().x() + m_imgLTop.width(), r.topLeft().y(),
( r.topRight().x() - r.topLeft().x() ) - m_imgLTop.width() - m_imgRTop.width(), m_imgCTop.height() );
painter.drawImage( rectCTop, m_imgCTop ); QRect rectCBot( r.bottomLeft().x() + m_imgLBut.width(), r.bottomLeft().y() - m_imgLBut.height(),
( r.topRight().x() - r.topLeft().x() ) - m_imgLTop.width() - m_imgRTop.width(), m_imgCBut.height() );
painter.drawImage( rectCBot, m_imgCBut ); QRect rectCCur( r.topLeft().x() + m_imgLTop.width(), r.topLeft().y() + m_imgLTop.height(),
( r.topRight().x() - r.topLeft().x() ) - m_imgLTop.width() - m_imgRTop.width(),
( r.bottomLeft().y() - r.topLeft().y() ) - m_imgLTop.height() - m_imgLBut.height() );
painter.drawImage( rectCCur, m_imgCCur );
}
Qt实现九宫图类控件的更多相关文章
- Qt 界面使用自己定义控件 "提升为"
1.效果图 我做了一个很easy的样例,一个能够显示颜色的QLabel,边上有个button,点击,跳出颜色选取的Dialog,然后选择一个颜色.这个QLabel会变成什么颜色. 2.ColorLab ...
- Android RecyclerView滚动类控件修改、去掉滑动边界的阴影效果
前言 滚动类控件,大家都用的很多,如 RecyclerView.NestedSrollView.... 下面以recyclerView为例讲解,其他滚动控件也同理. RecyclerView 滚动列表 ...
- PyQt(Python+Qt)学习随笔:布局控件layout的layoutSizeConstraint属性不起作用的问题解决办法
在<PyQt(Python+Qt)学习随笔:布局控件layout的layoutSizeConstraint属性>中介绍layout的layoutSizeConstraint属性后,反复测试 ...
- Android一个炫酷的树状图组织架构图开源控件实现过程
Android一个炫酷的树状图组织架构图开源控件 文章目录 [1 简介] [2 效果展示] [3 使用步骤] [4 实现基本布局流程] [5 实现自由放缩及拖动] [6 实现添加删除及节点动画] [7 ...
- kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件
该kettle插件功能类似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义 ...
- 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件增加了 PlaceholderText 属性
[源码下载] 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件 ...
- 基于Qt的第三方库和控件
====================== 基于Qt的第三方库和控件 ====================== libQxt -------- http://dev.libqxt.o ...
- C#控件系列--文本类控件
C#控件系列--文本类控件 文本类控件主要包含Label.LinkLabel.Button.TextBox以及RichTextBox. Label 功能 Label用来 ...
- 八、pyqt5按钮类控件——QPushButton、QRadioButton、QCheckBox
pyqt5中常用的按钮类控件有QPushButton.QRadioButton.QCheckBox.QToolButton等.这些按钮类的基类都是QAbstracButton类.所以这些类有部分方法是 ...
随机推荐
- 1.0 配置 appium + java的环境
1. 配置 appim的环境前面中写到. 2. 在eclipse中配置 java 环境, 具体步骤: <1>:在 eclipse 中新建 一个java 项目. ...
- Linux程序设计之shell程序设计
看了<linux程序设计(第4版)>(作者:Neil Matthew ,Richard Stones ,陈建 ,宋健建译).做个笔记,以备后面查看. 首先,清楚几个概念. shell编程属 ...
- JavaWeb 后端 <九> 之 JDBC加强
一.大结果集的分页(重点,难点) 1.分批次查询:分页 2.基于数据库的分页:依赖的是数据库的分页语句(不同数据库是不同的) MySQL:每页显示10条. select * from XXX limi ...
- c++ 命名空间 以及 作用域 函数参数 面向对象实验报告
面向对象的分析与设计 实验报告一 一.变量的储存类别 auto static register extern auto变量 函数中的局部变量,如不专门声明为static存储类别,都是动态地分配存 ...
- Java 反射在实际开发中的应用
运行时类型识别(RTTI, Run-Time Type Information)是Java中非常有用的机制,在java中,有两种RTTI的方式,一种是传统的,即假设在编译时已经知道了所有的类型:还有一 ...
- html中的锚点
一.页面内跳转的锚点设置 页面内的跳转需要两步: 方法一: ①:设置一个锚点链接<a href="#miao">去找喵星人</a>:(注意:href属性的属 ...
- 使用Linux环境变量
bash shell用一个叫做环境变量的特性来存储有关shell会话和工作环境的信息. 全局环境变量 这对shell 会话和所有生成的子shell都是可见的.局部变量只对创建他们的shell可见. 系 ...
- CentOS7.2设置静态IP
首先将源文件进行备份: [zgw@localhost 桌面]$ sudo cp /etc/sysconfig/network-scripts/ifcfg-eno16777736 /etc/syscon ...
- Android - 电池状态
为了解决电池图标的问题,顺带看了看电池信息的获取方法 :自己写了一个小栗子,来验证一下效果 电池的信息,一般都在BatteryManager里面,信息是用广播发出的.我们更新信息需要一个广播接收器 注 ...
- (转)Linux文件系统的实现
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Linux文件管理从用户的层面介绍了Linux管理文件的方式.Linux有一个树状 ...