摘要:支持多种自定义功能。包括但不限于支持长度自定义,字体自定义,颜色自定义。老规矩先上图

基于QWidget开发,支持多种形式,根据属性可以实现多种不同类型的电子印章,有关形状枚举参考代码如下

  ///印章形状枚举enum LQELECTRONICSEALIDS{LQESSHAPE_ROUNDE = 0,      //正圆形,例如合同章,公章等LQESSHAPE_OVALES,          //椭圆形,例如发票章LQESSHAPE_SQUARE,          //正方形,例如法人章LQESSHAPE_RECTSR           //长方形,例如财务章};

自定义功能可谓是非常全面,有关自定义属性参考代码如下

/// 电子印章控件风格数据结构体typedef struct LQELECTRONICSEALINF_{QColor                      cBkgColorsValue = Qt::transparent;  //控件背景色double                      dBorderSpaceVal = 4.0;                  //边框间距QColor                      cOutBorderColor = QColor(251,60,40);    //外边框颜色QColor                      cInnBorderColor = QColor(242,42,21);    //内边框颜色QColor                      cTextColorValue = QColor(253,28,33);    //印章文本颜色double                      dHeightScaleVal = 1.3333;               //椭圆和长方形时宽高比例bool                        bHasDrawBkgClrs = false;                //是否绘制背景色uint                        uBorderStyleIds = 1;                    //边框风格,0单边框,1双边框double                      dOuterBorderWid = 1.0;                  //外边框宽度double                      dInnerBorderWid = 0.5;                  //内边框宽度double                      dBkgRadiusValue = 0.01;                 //矩形圆角比例uint                        uTextMaxLengths = 30;                   //印章正文最大长度uint                        uCodeMaxLengths = 30;                   //印章编码最大长度bool                        bShowCenterIcon = true;                 //是否显示中间图标bool                        bIsShowCodeText = true;                 //是否显示编码bool                        bBordersArrange = true;                 //是否沿着边框排列,在圆形或者椭圆时只能以此方式排列QFont                       fTextFontObject;                        //正文字体对象QFont                       fCodeFontObject;                        //编码字体对象uint                        uTextsFontSizes = 9;                    //正文字体大小uint                        uCodesFontSizes = 6;                    //编码字体大小uint                        uTextPaddingVal = 6;                    //文本边距double                      dCenterImgScale = 6.0;                  //控件中央图标大小比例double                      dTextFullsAngle = 240.0;                //印章正文角度和double                      dTextStartAngle = 120.0;                //印章文本起始角度double                      dCodeStartAngle = 15.0;                 //印章编码起始角度bool                        bShowSpecialTxt = false;                //是否显示专项内容bool                        bShowSpecialNum = false;                //是否显示专项编号。专项编号与中心Logo同时只能显示一个int                         nGlobalAngleVal = 0;                    //全局角度uint                        uShowFocusLines = 2;                    //是否显示着重线条,0不显示,1单线,2双线bool                        bTextsBoldFonts = true;                 //是否强制使用粗体LQELECTRONICSEALIDS         eStampShapesIds = LQESSHAPE_ROUNDE;     //印章形状bool operator == (const LQELECTRONICSEALINF_& rhs) // == 操作运算符重载{return  (cBkgColorsValue == rhs.cBkgColorsValue)&& (DoubleValCompare(dBorderSpaceVal,rhs.dBorderSpaceVal))&& (cOutBorderColor == rhs.cOutBorderColor)&& (cInnBorderColor == rhs.cInnBorderColor)&& (cTextColorValue == rhs.cTextColorValue)&& (DoubleValCompare(dHeightScaleVal,rhs.dHeightScaleVal))&& (bHasDrawBkgClrs == rhs.bHasDrawBkgClrs)&& (uBorderStyleIds == rhs.uBorderStyleIds)&& (bIsShowCodeText == rhs.bIsShowCodeText)&& (DoubleValCompare(dOuterBorderWid,rhs.dOuterBorderWid))&& (DoubleValCompare(dInnerBorderWid,rhs.dInnerBorderWid))&& (DoubleValCompare(dBkgRadiusValue,rhs.dBkgRadiusValue))&& (uTextMaxLengths == rhs.uTextMaxLengths)&& (uCodeMaxLengths == rhs.uCodeMaxLengths)&& (bShowCenterIcon == rhs.bShowCenterIcon)&& (bBordersArrange == rhs.bBordersArrange)&& (uTextsFontSizes == rhs.uTextsFontSizes)&& (uCodesFontSizes == rhs.uCodesFontSizes)&& (uTextPaddingVal == rhs.uTextPaddingVal)&& (DoubleValCompare(dCenterImgScale,rhs.dCenterImgScale))&& (DoubleValCompare(dTextFullsAngle,rhs.dTextFullsAngle))&& (DoubleValCompare(dTextStartAngle,rhs.dTextStartAngle))&& (DoubleValCompare(dCodeStartAngle,rhs.dCodeStartAngle))&& (bShowSpecialTxt == rhs.bShowSpecialTxt)&& (eStampShapesIds == rhs.eStampShapesIds)&& (bShowSpecialNum == rhs.bShowSpecialNum)&& (nGlobalAngleVal == rhs.nGlobalAngleVal)&& (uShowFocusLines == rhs.uShowFocusLines)&& (bTextsBoldFonts == rhs.bTextsBoldFonts);}bool operator != (const LQELECTRONICSEALINF_& rhs) // != 操作运算符重载{return !(*this == rhs);}}LQELECTRONICSEALINF,*PLQELECTRONICSEALINF;

主要绘制定义代码如下

/// 初始化印章控件/// \brief InitElectronicSeal///virtual void InitElectronicSeal();protected:///重写系统绘制事件virtual void paintEvent(QPaintEvent *event) override;/// 绘制圆形印章/// \brief DrawRoundedStamps/// \param painter///virtual void DrawRoundedStamps(QPainter *painter);/// 绘制椭圆形印章/// \brief DrawsOvalesStamps/// \param painter///virtual void DrawsOvalesStamps(QPainter *painter);/// 绘制正方形印章/// \brief DrawsSquareStamps/// \param painter///virtual void DrawsSquareStamps(QPainter *painter);/// 绘制长方形印章/// \brief DrawRectangStamps/// \param painter///virtual void DrawRectangStamps(QPainter *painter);/// 绘制印章图片/// \brief DrawElectronicSeal///virtual QPixmap DrawElectronicSeal();public:/// 复制印章图像到 剪贴板/// \brief CopyStampImageObj///void CopyStampImageObj();/// 保存印章图像到文件/// \brief SaveStampImageObj/// \param uFilePath:文件路径/// \param uError   :错误信息///bool SaveStampImageObj(std::u16string uFilePath,std::u16string& uError);private:LQELECTRONICSEALINF tCtrlStylesData;         //控件风格数据结构体std::u16string      sTextDataString;         //控件文本数据std::u16string      sCodeDataString;         //控件编码数据std::u16string      sSpecialTextVal;         //图章专项数据内容std::u16string      sSpecialTextNum;         //图章专项编码内容std::u16string      sCentersImgPath;         //控件中间图标

太困了,先占个位,有关具体实现事宜,晚点在写。后面可能还会在补几张其它类型印章图片

有关详细信息和技术交流,移步QQ群:717743458。

Qt,C++多功能电子印章控件实现相关推荐

  1. VS+QT开发Ocx/ActiveX控件 一

    VS+QT开发Ocx/ActiveX控件 一 VS+QT开发Ocx/ActiveX控件-------网页中全屏 二 QT开发ActiveX控件 一:所用IDE版本,需用管理员权限 二:创建Active ...

  2. Qt开发Activex笔记(二):Qt调用Qt开发的Activex控件

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/113789693 长期持续带来更多项目与技术分 ...

  3. QT QSpinBox 整数计数器控件 使用详解

    本文详细的介绍了QSpinBox控件的各种操作,例如:获取数值.设置前后缀.设置最大/小值.进制转换.关联信号槽.优化信号.QSS优化.文件源码.样式表 .效果:可以设置背景.边框.向上按钮.向下按钮 ...

  4. QT自定义控件之倒计时控件

    文章目录 1 效果预览 2 加载背景图片 3 尺子可拉动头部的实现 4 整个尺子部分的实现 5 表盘的实现 6 主界面代码实现 1 效果预览 我们首先来看下实现的效果: 右边的表带拉动会使左边的表盘跟 ...

  5. 【Qt开发】常用控件--QLineEdit

    QLineEdit是单行文本编辑控件.比如用户名,密码等输入框可以使用该控件. 所属头文件<QLineEdit> 常用方法 1.void setText(const QString &am ...

  6. Qt修炼手册10_QTableWidget控件使用说明及实践

    1.QTableWidget类简介 QTableWidget是QT对话框设计中常用的显示数据表格的控件. QTableWidget继承于类QTableView,所以在学习QTableWidget之前可 ...

  7. Qt QWidget实现开关控件SwithButton(SlipButton)

    前言 Qt做界面的时候常常会用到开关控件,类似于CheckButton有两种状态,只是界面表现形式不一样而已.本文通过QWidget类来实现一个开关控件SwitchBtn(有些平台上又称为SlipBu ...

  8. QT tableview内置控件

    为什么需要内置控件 tableview 默认的内置控件是QLineEdit,但是实际使用时,我们常常会有特殊需求,例如对QLineEdit有字数限制,性别有固定的选项等等,因此我们需要自定义table ...

  9. Qt笔记 之 QListWidget控件的使用

    Qt提供QListWidget类列表框控件用来加载并显示多个列表项.QListWidgetItem类就是列表项类.一般列表框控件中的列表项有两种加载方式: 一种是由用户手动添加的列表项,比如音乐播放器 ...

最新文章

  1. 090620 刚才修复一个fat32分区的经历
  2. 学术不端网查重靠谱吗_毕业论文查重把知网上的英文文章翻译成中文可以吗
  3. C#中HttpClient使用注意:预热与长连接
  4. 一些我工作中经常使用的ABAP新语法和函数,关键字,可以提高工作效率
  5. 汇编-函数调用的理解
  6. centos yum安装_centos7上yum安装碰到的坑
  7. 电子计算机职专东校区在哪,自贡计算机电子信息职业技术学校位置在哪儿
  8. 天上友嘉不用c语言吗,【天上友嘉怎么样?】-看准网
  9. 软件测试—软件测试基础知识—测试用例设计的方法判定表和因果图
  10. NLP 自然语言分析理解
  11. 20款优秀的可以替代桌面软件的Web应用(转载自JavaEye)
  12. 分析 : BSOD案例 2013-0821
  13. 北卡罗来纳州立大学计算机专业,2020年北卡罗来纳州立大学有哪些优势专业
  14. 8.单链表实现与反转
  15. SQL Server 进程无法连接到 Subscriber “xxxxxx”
  16. 用spark实现单词统计
  17. Python操作Excel文件:插入一列数据
  18. 带你理解面向过程与面向对象
  19. iObit Driver Booster 8 驱动更新失败 只停留在 1%
  20. 入手级仿真软件和编辑器安装(VIVADO)

热门文章

  1. C++:实现量化ODE模型测试实例
  2. 机器学习中的数学——常用概率分布(四):均匀分布(Uniform分布)
  3. 2022 计算机视觉顶会论文----目标检测
  4. 【codeforces 777D】Cloud of Hashtags
  5. 好用的电视盒子软件推荐:无广告看电视我选这两款
  6. java之extends关键字
  7. 《沉默的大多数》王小波——读后感
  8. 5.MCScanX 与circos下载、安装、运用
  9. List 过滤、排序、校验等处理方法
  10. 浅谈Feature Scaling