Qt聊天项目

QLatin1string保存的是字符串的地址,比直接的qsring开销小

styleSheet=this->styleSheet()是获取当前的样式表再和从文件中读取的样式表合并起来

styleSheet += QLatin1String(file.readAll());
setStyleSheet(styleSheet);

就是该控件的样式表

painter里的设置透明也就是给图片设置透明是:

QPainter painter;
painter.fill(Qt::transparent);

而主窗口的设置透明则是:

setAttribute(Qt::WA_TranslucentBackground, true);				// 透明效果

白色的RGB是(255,255,255),黑色是(0,0,0);

在 Qt 中,槽函数可以是任何类的成员函数,只要它们符合槽函数的定义。因此,onShowQuit 函数不需要是 m_parent 的直接成员函数,它只需要是 m_parent 类或其基类的成员函数即可。

(2024.4.5)遇到了一个大错误:::数据库连接不上,很崩溃,试了很多次,最后用navicat不小心把root用户给删了,root用户是最重要的用户,结果navicat和mysql连接不上了,mysql也登不进去,试了很多方法将root用户给恢复回来,结果多没有用。最后气的只能重新删除mysql,将mysql的日志,服务等都删掉,重新下载,结果下载成功后mysql和navicat无法连接,sqlyog也连接不上2058错误,再次崩溃,最后发现是版本不兼容,导致加密方式不一样,幸好解决方案很简单,在mysql的命令行里更改密码就可以让mysql的加密方式更改,结果就可以连接上了,还得重新写数据库的内容,花了2个半小时解决。

navicat不好用,因为新下的是mysql8.0,里面选择字符集编码的话没有utf8了,只有utfmb3和utfmb4供选择,不知道为什么其实选utfmb4是可以的,可以进行正常的编码但就是出现了中文乱码现象,最后网上办法都试了没用,无奈只好换sqlyog连接数据库,发现这里没有该问题

总是发现QPixmap和QImage的区别分不清,这里用的是QPixamp那里用的是QImage总是傻傻分不清,区别

  1. QPixmap主要是用于绘图,针对屏幕显示而最佳化设计,QImage主要是为图像I/O、图片访问和像素修改而设计的
    2.QPixmap 适合用于绘制到屏幕上或者其他显示设备上,如在 QPainter 中使用 drawPixmap 进行绘制操作,QImage 更适合用于图像处理、图像格式转换、像素级操作等场景,因为它提供了丰富的像素级操作接口,比如直接修改像素颜色、剪切、缩放等。
    3.QPixmap 的数据存储方式优化了显示操作,因此在显示图像时性能更高,但不适合进行频繁的像素级操作,QImage 的性能相对较低,但提供了更丰富的像素级操作接口,适合于图像处理等场景

两者转换方式就是QPixamp::FromImage(image)和QImage image=pixmap.toImage();

QLatin1String作用和QString差不多,但是这个很有效率,当内容过多时好使用,因为这个指定的是目标的地址而不是值。

QScrollArea是qt里能滚动的子控件,也就是可以下拉,在ccMainWindow的ui界面设置里,在使用TreeWidget前用QScrollArea作底可以实现下拉。

User

在qt里Resources/MainWindow/MsgHtml/msgtmpl.txt是相对路径,资源没有加载到qrc里面
:/Resources/MainWindow/MsgHtml/msgtmpl.txt是绝对路径,资源加载到qrc里面了

Q_GLOBAL_STATIC(WindowManager, theInstance)是单例模式的又一个写法,Q_GLOBAL_STATIC 是 Qt 框架中的一个宏,用于创建全局静态对象。WindowManager 是一个类的类型,theInstance 是该静态对象的名字。作用是在程序运行期间创建一个全局的静态对象,该对象在程序的整个生命周期中都存在,且只会被创建一次

在Qt中,Qt::UserRole是一个特殊的角色,用于存储自定义数据。通常情况下,Qt提供了一些预定义的角色,比如Qt::DisplayRole用于显示数据,Qt::EditRole用于编辑数据等。但有时候,我们可能需要存储一些与显示和编辑无关的额外数据,这时候就可以使用Qt::UserRole角色。

在重写事件中有mousePress,mouseRelease,mouseMove事件,但是没有捕捉鼠标焦点进入到输入框之类的这种事件,这时候要实现捕捉鼠标进入输入框,lineEdit进行一系列响应的变化就得用到事件过滤器,void eventFilter(QObject* obj,QEvent* event)进行重写,且注意得先给该输入框下载事件过滤器,如ui.lineEdit->installEventFilter(this);

QSpilter是个分裂器,在属于一个布局,在工具栏可以直接用,因为是布局,所以添加子部件的方法是addWidget同时一个spilter可以添加多个子部件,如果添加三个子部件,就会在每两个部件间出现一个分裂符。

在这里插入图片描述

qreal是浮点型,qint64相当于long long

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值