6 生在90后的60后

尚未进行身份认证

我要认证

生生不息。。

等级
TA的排名 3w+

QComboBox自定义(一)--类似QQ登陆界面的下拉框

刚学Qt的时候,初步经历的第一个学习项目基本上都是LANQQ,初识时,不懂QSS,不懂布局,绘制界面最简单的方式成了使用designer拉满整个界面的控件,或者使用代码写了一些很蹩脚的布局。也是很羡慕别人哪些精致的界面,印象很深的是QQ登陆界面的下来列表,下面,我们简单的来介绍下怎样做到和QQ登陆界面一样的下拉列表。先看一下效果:没有做qss的美化,简单的实现了下功能,如果需要在显示名称的部分也需要显示头像的话,也是可以,这个在下一节自定义控件的时候再看。简单的改造了一下上次的ListTemplat

2020-07-27 08:19:25

Qt 自定义IP输入控件

最近遇到一个需要IP端口的需求,而且量并不少,每次在对这个输入框处理的时候很麻烦,想着是不是可以独立出来一个单独的控件,方便以后使用,试着找了几种方法来实现一下。1、使用QLineEdit的inputMask方法使用该方法比较简单,一种是直接在designer界面中输入,另一种是通过代码进行设置,其中比较重要的是mask的格式。mask 格式如下:000.000.000.000使用这种方式能够正常的输入IP,但存在的问题是,设置完mask之后,就相当于对QLineEdit进行了占位,每一格都是三位,假

2020-07-21 08:30:37

Qt QTreeWidget的级联选中

在使用QTreeWidget显示文件树时,需要对树的节点做一些功能的限制:勾选某一节点时,该节点的子项自动全部选中子项部分勾选时,父节点状态为部分勾选子项全部勾选时,父节点自动设置勾选首先,查看了Qt文档,发现竟然没有提供这个功能,所以自己写了一个简单的例子。QTreeWidget在添加节点时,其节点前面的复选框默认时不显示的,而要显示复选框,我们则需要通过QTreeWidgetItem的方法来设置。void QTreeWidgetItem::setCheckState(int column

2020-06-30 23:19:57

Qt实现模拟微信联系人列表

联系人列表主要由两部分组成,每个联系人的状态消息框和一个列表组成,因此,我们用QListWidget和自定义的item来实现这个列表。1、自定义message item如图:一个item由头像、昵称、最近的一条消息、最近一条消息的时间和关闭按钮组成,因此我们首先用designer按照需要的东西选择合适的控件进行绘制界面。界面绘制完成之后,就需要完成界面所需要的一些槽函数,在这边,我们应该有一个主题思想是需要确定的,就是每个item所需要的数据由自己管理,这样,在管理这些数据的时候就会比较方便, 会

2020-06-30 00:36:25

Qt自定义控件的实现与使用

这里写自定义目录标题前言自定义控件的创建自定义控件的使用前言Qt已经提供了很多的基础控件供开发使用,而Qt原生的控件有时候并不能满足我们的需求,特别是在工业的运用上,比如我们需要一个日期时间的选择器,Qt虽然已经提供了原生的QDateTime控件,但这个原生控件并不能满足我们的需求,又比如我们需要实现类似微信左侧的消息列表,单纯的原生QListWidget(QListView)并不能完整的满足需求,这个时候我们就会寻找一种可以满足我们需求的控件。而Qt提供了自定义控件的功能,我们可以通过QtCreato

2020-06-11 11:41:12

装饰者模式(Decorator)-设计模式(十五)

作用:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式相比生成子类更为灵活。简单的来说,就是已经有一个类了,这个类中有一些功能,现在想给这个类多增加几个功能,使这个类的功能更强大。举个例子:麦当劳的炸鸡腿很好吃,但有些客户总是喜欢在炸鸡腿上挤上一些芝士,那才是人间美味,这样,在制作炸鸡腿之后,才需要挤芝士,因此挤芝士这个动作可以看作是后续对整个炸鸡腿的装饰。装饰模式和适配器模式的关系:相同点:两者都是包装模式,都是通过封装其他的对象达到设计的目的。不同点:理想的装

2020-06-08 22:15:58

迭代器模式(Iterator)- 设计模式(十四)

文章目录作用举个例子优点缺点使用场景注意事项UML 结构图例子运行结果作用提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。简单的来讲,就是提供了一个索引,这个索引只能顺序的访问,并且不知道该对象的内部表示。比如我们经常用到的for循环语句,一般用作遍历数组,其中的 ++i;其作用是每次循环之后i的值加1,这样就能访问下一个(下下一个)数组中的元素,也就是从头至尾的遍历了数组。将i抽象化后并使其能够通用,则就形成了iterator模式。迭代器模式是每个程序员无意之间接触最早的设

2020-06-02 20:02:30

策略模式(strategy)- 设计模式(十三)

文章目录作用举个例子优点缺点与其他设计模式的区别UML 结构图例子作用定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。也就是说,从表面上看,这一系列的算法实现相同的功能,提供一样的接口,是可以相互替换的,但是每个算法的内部实现可能不一样。简而言之一句话,Strategy 模式是对算法的封装。处理一个问题的时候可能有多种算法,这些算法的接口 (输入参数,输出参数等)都是一致的,那么可以考虑采用Strategy 模式对这些算法进行封装,在基类中定义一

2020-06-01 10:50:46

atexit函数的用法

首先我们了解下atexit函数:函数名:atexit头文件:#include<stdlib.h>功 能 : 注册终止函数(即main执行结束后调用的函数)原型 : void atexit(void (*func)(void));说明:atexit()用来设置一个程序正常结束前调用的函数. 当程序通过调用exit()或从main 中返回时, 参数function 所指定的函数会先被调用, 然后才真正由exit()结束程序。调用顺序: 在atexit(f)调用之前被静态分配的对象的

2020-05-26 09:10:29

C++继承中子类的构造方法

构造方法是用来初始化类的对象,与父类的其他成员不同,在C++11之前,不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法),因此,为了完成基类的初始化,需要在初始化列表中调用基类的构造函数,从而完成构造函数的传递,如果基类有多个构造函数,子类需要实现与基类相对应的(多个)构造函数。如果没有显示的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显示的申明构造函数的情况下创建。如下:class Base{public: Base(char c

2020-05-25 20:46:00

职责链模式(ChainOfResponsibility) -设计模式(十二)

作用:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止.举个栗子:去麦当劳点餐,点了一个麦香鸡腿,麦当劳制作工作人员有很多,这个麦香鸡腿可能由任何一个工作人员制作,但我们并不知道是由谁去制作的,我们只关心鸡腿有没有被制作。古代皇帝召见某位大臣时,一般是由龙椅旁边的宦官进行喊话,然后一个一个的接着喊下去,最后直到找到这位大臣为止,而皇帝并不知道是由哪一位宦官找到这位大臣的。发出请求的客户端并不知道请求最终由

2020-05-23 15:24:39

Qt 中 QListWidget 获取itemWidget() 失败

前两天在测试的时候,发现QListWidget 类 调用 listWidget->itemWidget(pItem) 函数时返回了Q_NULLPTR,这不是一个平常会遇到的问题,探查了一下资料,找到了问题的原因,记录一下这个问题。首先,我们创建一个简单的QListWidget,并且自定义其item:namespace Ui { class Item;}class Item : public QWidget{ Q_OBJECTpublic: explicit Item(const Q

2020-05-22 16:00:09

代理模式(Proxy)-设计模式(十一)

1、作用为其他对象提供一种代理以控制对这个对象的访问。 简单的说,就是客户端和目标端之间的中介。举个例子:房东出租房子,但懒得自己找租客,因此找了中介,由中介代理租房,租客租房子,直接找不到房东,通过中介找房东租房子,这个中介可以看作是代理。优点:通过一个代理对象完成一系列的操作处理,在以后的改动中,就会允许操作对象(动态修改、添加等),符合开放封闭原则代理模式协调了调用者和被调用者,降低了代码的耦合度, 扩转性较好可以以小对象代理大对象,减少消耗(虚拟代理)代理场景:远程代理:也就

2020-05-19 21:10:16

状态模式(State)-设计模式(九)

1、作用允许一个对象在其内部状态改变时改变它的行为。每个人、事物在不同的状态下会有不同的表现,而一个状态在不同的表现下会转换为另一个状态。举个例子:我们去买一杯奶茶,有热饮、冷饮、和常温三种可供选择,我们首先选择了常温的,在奶茶开始制作的时,抬头看了看天气,现在烈日炎炎,想想一杯冰凉的奶茶是不是能够按下躁动的心,因此立马决定告诉店员,我需要改成冷饮,而店员呢,也就需要改变奶茶的制作流程。2、解决的问题我们在搬砖中经常会遇到几种状态的选择,比如简单的鼠标的三种状态,遇到这种情况时,通常的方式是使用

2020-05-19 08:51:32

Qt QPushButton设置菜单

文章目录1、常规模式2、非常规模式基本上,我们遇见的各种软件,最上方都有一行菜单栏,菜单栏实现了各种功能,Qt的QMainWindow控件提供了MenuBar,可在MenuBar上方便的添加菜单,但是有时候我们并不需要很多的菜单,有一个就够了,这个时候如果还使用MenuBar,那么在界面显示上会显得不是那么美观。因此我们会找更好的方法进行菜单的设置,使用QPushButton和菜单结合起来使用就...

2020-04-11 00:04:43

Qt线程处理图片(绘画、压缩、保存、压缩图片的读取)

文章目录1、绘画2、压缩3、保存4、读取1、绘画Qt提供了QPainter类来对图片进行绘画,提供了QImage类对图片进行压缩和保存。如果图片显示在UI上,我们就能够很正常的使用QPaintEvent函数对图片进行绘画的操作,但有时候,我们需要批量处理图片,并且在处理这些图片的过程中图片是不可现的。那么我们就需要开启线程去处理这些图片。前段时间在线程处理图片时踩了一些坑,将这些坑分享一下...

2020-04-06 10:49:09

Qt生成随机字符串

取随机字符的形式生成 QString ResultClient::getRandomString(int nLen) { qsrand(QDateTime::currentMSecsSinceEpoch()); const char ch[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; int siz...

2020-03-30 19:53:57

QT 更改本地时间

QT有提供QDateTime类,该类能够很方便的获取本地的系统时间,但是并没有提供设置本地系统时间的方法。windows系统下:​ 设置本地系统时间有两种方法,一种是调用系统的接口设置,另一种是通过系统命令行设置。 QDateTime datetime;​ //设定要修改的系统时间,为了方便,直接调用了Qt的接口获取了本地系统时间​ datetime = QDateT...

2020-03-30 15:34:47

Qt中设置自定义字体

我们在做软件的过程中,经常遇到字体版权问题,或者只是单纯了的为了好看,会加载不同的字体应用到我们字体的程序中,Qt中提供了类QFontDatabase来实现这个功能。该类能够实现自定义字体、字体切换等多种功能,今天我们介绍下怎么给软件使用自定义字体。自定义字体之前,我们需要先准备好自定义的字体文件,免费开源的字体有很多,这个在网上能够找到很多。我们主要看下Qt中的代码实现。bool onLo...

2020-01-09 10:03:07

Qt样式表

1、什么是QSS说QSS之前,先了解下CSS,一般接触过前端开发的都知道CSS是什么,CSS(层叠式样式表)一般用来表现HTML或XML等文件的计算机语言,CSS能够静态修饰网页,也能够结合脚本对网页各元素进行动态格式化。而QSS,说白了,就是适用于Qt的“层叠式样式表”,由影响窗口部件绘制的样式规则组成,在概念、术语、语法上等很大程度上受到了CSS的影响,QSS的功能比CSS弱很多,主要是体...

2020-01-07 20:25:58

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享达人
    分享达人
    成功上传6个资源即可获取