QT
风华正茂的小老弟
这个作者很懒,什么都没留下…
展开
-
日常项目总结
前言:项目总结1、自定义的QComboBox触发鼠标点击事件: void QComboBoxSwitch::mousePressEvent(QMouseEvent* event) { QComboBox::mousePressEvent(event); //执行下面操作。 }2、客户端与服务器断开连接,立刻关闭,没有时间逗留。 struct linger { int l_onoff; int l_linger; }; linger m_sLinger;原创 2022-05-01 14:46:18 · 191 阅读 · 0 评论 -
QDialog关闭右上角问号
不知道是不是换了MSVC64位编译器的问题,网上让设置Dialog出现窗口之后让问号不出现的方法,设置之后窗口都不能显示出来。解决:setWindowFlags(windowFlags()&~Qt::WindowContextHelpButtonHint);原创 2021-11-04 11:27:18 · 594 阅读 · 0 评论 -
Qt使用VS编译出现的乱码问题
前言: 当编译器从mingw换成MSVC,重新编译的时候,编译不通过,出现不识别的字符等。原因: Qt Create 保存文件使用的是UTF-8编码,MSVC虽然可以正常编译带BOM的UTF-8编码的源文件(所以这里将源文件改为带BOM的UTF-8,比如可以使用NodePad++设置UTF-8),但是生成的可执行文件的编码是Windows本地字符集,比如GB2312。在可执行文件中,字符串是以GB2312编码的,当执行到这条语句时,对这个字符串是以UTF-8解码的,所以会出现乱码。解决:方法1、在用到原创 2021-10-22 10:32:30 · 1249 阅读 · 0 评论 -
在主界面上show一个新窗口,新窗口中的内容不显示?
前言:在主窗口的槽函数中,new一个新窗口,窗口中new了一个label,label上写的:文件正在处理,请稍后。在槽函数中在new之后,接着对文件操作,然而新窗口内的label不显示,等到该函数结束,文件处理完,新窗口才显示完。想法跟处理:exec()函数阻塞窗口,下面函数不进行在show()之后添加:QCoreApplication::processEvents();让show函数执行完。...原创 2021-06-08 14:19:35 · 368 阅读 · 0 评论 -
QScrollBar中的setWidgetResizable函数
背景:让滚动区域中的内容的左右随着窗口自适应,上下内容超出屏幕,出现滚动。方法: widget = new QWidget; sWidget = new QScrollArea; sWidget->setWidget(widget); //sWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); sWidget->setWidgetResizable(true);关键函数在于setWidg原创 2021-03-02 10:18:20 · 2513 阅读 · 0 评论 -
域名转化Ip之后的connect
背景:上层传过来的ip是域名,当用inet_addr()函数进行转换赋值时出现错误,导致Tcp连接失败。方法:首先判断传过来的ip是否是真的ip还是域名,如果是ip就直接inet_addr(),如果是域名,那就将域名转换成ip,再接着连接。代码:struct sockaddr_in addr_server;memset(&addr_server, 0, sizeof(addr_server));addr_server.sin_family = AF_INET;QString strI原创 2021-03-02 09:32:22 · 411 阅读 · 0 评论 -
读取Xml文件(包含中文和中文字符),显示在QLineEdit上
前言:Xml文件中包含中文和中文字符,显示乱码在QLineEdit控件上解决: QFile f(filePath); if (!f.open(QFile::ReadOnly | QFile::Text)) { return false; } QTextStream stream(&f); QTextCodec *codec = QTextCodec::codecForName("UTF-8"); stream.setCodec(co原创 2021-02-26 17:46:02 · 356 阅读 · 0 评论 -
Qt release版本 exe启动错误
前言:今天将项目5.6版本更改为5.12版本,release之后,将原来的.exe文件替换,之后出现错误,打不开.exe,应该是原来要依赖的动态库不支持。解决:执行Qt 5.12.10 (MinGW 7.3.0 32-bit)进入.exe所在文件夹然后windeployqt .exe文件名 回车 配置完成。...原创 2020-12-25 13:53:10 · 439 阅读 · 0 评论 -
Qt模块的划分
根据Qt文档,翻译Qt模块的划分。“Help” -> “Reference” -> “All Qt Modules”Qt模块分成五大类:Qt Essentials(Qt基础模块).Qt Add-Ones(附加模块).Value-Add Module(增值模块).Technology Preview Features(技术预览模块).Qt Tools(工具).Qt 基础模块:Qt Essentials定义了所有平台上Qt的基础。 它们在所有受支持的开发平台和经过测试的目标平台上都原创 2020-12-03 11:47:50 · 715 阅读 · 0 评论 -
继上一篇阻塞情况下OpenSSL库的调用,如果是非阻塞情况
**前言:**在现的项目中是非阻塞的情况,不可能在等待客户端来连接,请他事情不做,accept默认阻塞,使其不阻塞。如果在非阻塞情况下,SSL_accept返回值为-1.阻塞:unsigned long iMode = 1; //set to non-blockingif(ioctlsocket(listen_sock,FIONBIO, (unsigned long *)&iMode) < 0){ closesocket(listen_sock); LOGERR("set soc原创 2020-11-27 14:04:06 · 1052 阅读 · 0 评论 -
客户端与服务器数据交互(OpenSSL库的调用(阻塞的情况))
前言:之前项目中调用SSL库,来作为服务器跟通讯工具通讯,也可以作为客户端跟服务器连接进行数据交互。准备工作: 为了保证调用的OPenSSL库是正确的,首先搭建测试环境。1、工具:因为工作上Qt用的较多,所以在Qt上进行的测试。IDE:Qt Create。2、创建了两个工程:Server(没有要验证客户端身份),Client(客户端没有进行任何证书验证,公钥私钥的加载)。Server.pro:LIBS += -L$$PWD -llibssl-1_1 \ -l原创 2020-11-17 13:34:59 · 664 阅读 · 0 评论 -
按字节读取文件
unsigned char sIBEParams[2048];QFile fParam((char *)ParamsFile); if (!fParam.open(QIODevice::ReadOnly)) { LOGERR( "open file [%s] ERROR\n", ParamsFile); return FILE_NOT_EXIST; } memset(sIBEParams,0x00,sizeof(sIBEParams));原创 2020-11-13 10:54:18 · 428 阅读 · 0 评论 -
Qt setStyleSheet 透明图片叠加
前言:懒惰不是我的理由,感觉隔了一万年没有写新的东西了。有关改变控件背景图片的需求,比如说:点击一个按钮,其他按钮背景发生变化,一点控件背景图亮一点,一些暗一点。背景:当时有两个想法,一个是将所有图片重新做,图片亮度亮一些或者暗一些,但是太浪费时间和人工,所以就有了第二个想法,将两张透明的,一张白色亮度高一些,一张透明的灰黑色的叠加上去就行了。于是就诞生了setStyleSheet的background-image,border-image,image有什么区别的疑问。解决疑问:background-i原创 2020-10-29 09:54:12 · 1286 阅读 · 0 评论 -
QListView的应用(按行添加,删除行,遍历数据,右击添加菜单)
前言:在原有的工具(只可以一次选一个文件)基础上支持一次性多个文件选择,并将选择的文件路径显示在listView上,并且可以支持右键删除文件路径。1、支持连续添加文件(下面这个是槽函数),setModel函数:QStringList fpath = QFileDialog::getOpenFileNames(this, "Please Select PS File", ".", "PS File(*.ps);;All Files(*.*)");QStringList pathlist = m_slFi原创 2020-06-03 11:08:04 · 7164 阅读 · 0 评论 -
递归遍历文件夹,递归解压,压缩文件,写解压和压缩过程的日志,
前言:好久好久没另写一篇博客了,都是在更新QT常用函数里面内容,这瘟疫影响了我躁动奋进的心,又是大半年没努力了,气人!这次做的是个多个压缩包 将压缩包里面的内容合并起来 打包成对应的压缩包的工具。1、递归解压文件:给我一个压缩包,里面还有很多压缩包,都解压完成才能拿到想要的文件:bool MainWindow::UnzipFile(QString ZipFilePath)//ZipFileP...原创 2020-05-08 16:25:39 · 1031 阅读 · 0 评论 -
项目阶段工作总结
兄弟们,我又回来了,好久没另写博客了,都是在更新qt里的东西,以后我要常写工作总结,最近在学习Effective C++,要把心得写下来跟大家多交流交流,[手动抱拳]。一、内容:关于这次工作中添加滚动条的总结:二、背景:真机模拟器更新后,当显示的数据超过屏幕高度的时候,滚动条出现,下拉可以显示更多的超出屏幕之外的信息数据。三、总结:1、不管是成员变量,全局变量还是函数名称,这些的命名还是不...原创 2019-12-10 11:49:30 · 565 阅读 · 0 评论 -
QT项目中的SetStyleSheet文件
一、首先要创建文件,我这里用的是txt文件,其他的文件格式没有试过,比如其他人介绍的qss文件,我没有试过,但是我觉得能从文件中读取出来,应该都是能行的,文件格式不影响。这里我用的是绝对路径的方式来加载文件,如下代码 我是截图的为了方便复制粘贴,我还是把源码贴上去吧 哈哈哈,贴心QString displayString;QFile file("D:/qt-project/sumilat...原创 2019-03-19 11:11:34 · 1540 阅读 · 0 评论 -
QT无边框窗口的移动,以及鼠标在指定区域可以拖动窗口
一、下面代码是在窗口的上方(0~22)的范围内,鼠标事件只能在这个区域有效。只要把这两个条件删去就可以在窗口内的任意位置接收到鼠标的信息,即鼠标事件在这区域有效。下面贴上代码: 1、头文件:class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent...原创 2019-03-19 11:43:15 · 2951 阅读 · 0 评论 -
setStyleSheet不起作用,就试试重写paintEvent事件试试
有时候发现->setStyleSheet不起作用,就重写这个事件void 类名::paintEvent(QPaintEvent *e){QStyleOption opt;opt.init(this);QPainter p(this);style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);QWid...原创 2019-03-19 11:19:32 · 988 阅读 · 0 评论 -
全局变量的使用
在项目中用全局变量有两种方法:1、第一种就是在源文件中定义,在其他文件中要使用的时候用extern修饰变量就可以使用2、来说说第二种方法:用static的方法,如果说的不对还请各位指正,我会及时修改。因为感觉在C++的.cpp中使用extern有点不舒服,还是在头文件中使用static好点,我只是个人感觉,哈哈~~~~因为在项目中要使用一个大的主窗口,我就在头文件中声明了,在源文件中定义如...原创 2019-04-09 15:35:17 · 3160 阅读 · 0 评论 -
QT中的sender函数,result函数
嗨!老铁们我又回来了,优化个项目搞死我了,终于搞定了!!!在这个项目中还是学了点东西的,我感觉比较重要的记下来跟大家分享,嘿嘿嘿。一、背景:在多个界面下的每个label,LineEdit,后面添加删除按钮。二、问题:添加了无数个按钮之后,点击按钮不知道是点击的哪个按钮三、这时候就可以用到sender()函数了。在new出按钮之后每个按钮绑定的槽函数里面用到: QPushButton ...原创 2019-04-26 17:28:21 · 2244 阅读 · 0 评论 -
QT两个控件相互关联,(指针的传值)
我这个小辣鸡又回来了,抱歉各位,我发现自己好low啊,指针的传值真正的内涵都没搞懂,有点丢人,哎,今天算是明白了,不亏血赚。背景:还是接着上一个项目优化的,我把问题简化了一下,就是怎么关联两个控件,就比如两个按钮是相互影响的,是接着上篇sender函数的操作,从一百个按钮中拿到一个btn1,点击它,他后边那个按钮btn2,会和他一起消失,点击btn2,btn1会发生其他动作。解决:我就简化成两...原创 2019-04-30 17:14:12 · 3545 阅读 · 0 评论 -
QT常用函数和总结(持续更新)
前情回顾:我又有一个多月没写博客了,上个月太忙了,忙着毕业设计跟论文,请了一个多月的假,实习也快结束了,我把我遇到的写下来,大家一起学习。内容: 一、trimmed //删除字符头尾空格 二、setEchoMode //设置密码保护(输入字符为小黑点) //输入什么就显示什么 1、echoLineEdit->setEchoMode(QLineEdit:...原创 2019-06-05 11:14:57 · 9269 阅读 · 2 评论 -
Qt的网络通信(以一对一聊天室为例)
Qt的网络通信(以一对一聊天室为例)一、以一对一(服务器,客户端)为例 1、服务器: 1、在目录文件 .pro文件中 QT += core gui network 添加network 2、在.h 文件中,定义 QTcpServer* server; QTcpSocket* socket; 记得添加头文件 ...原创 2018-08-30 23:32:00 · 980 阅读 · 0 评论 -
QT之pro配置详情
非常有用的QT.pro配置,受益匪浅。共同学习。pro配置转载 2019-06-18 15:53:07 · 1807 阅读 · 0 评论 -
【QT】布局之QFormLayout
**背景:**一直就知道有四种布局,QHBoxLayout,QVBoxLayout,QGridLayout,QFormLayout,但是一用到布局,我就只用QGridLayout,哈哈…今天就试了一试QFormLayout,有点把我难住,最后还是解决了。前三种QT手册中都有例子,CSDN上也有很多关于QFormLayout布局的,但是都一样,前面是label,后面是个QLineEdit,QT默认的...原创 2019-07-01 18:00:01 · 2066 阅读 · 0 评论 -
QDockWidget初始化大小的设置
一、QDockWidget的初始化大小class MyWidget:public QWidget{public: QSize sizeHize() const { return QSize(200,200); }};QDockWidget *pDockWidget = new QDockWidget;MyWidget *pMyWidget = ...原创 2019-09-06 16:12:17 · 2038 阅读 · 1 评论 -
QT中的改写窗口的关闭事件
一、背景:qt中的窗口不能像office一样,在点击关闭按钮的时候,会弹出是否保存,取消的界面,所有就要重新写关闭事件。今天在项目中遇到需要重新修改这一个直接关闭窗口的功能,所以就要重载这个函数QCloseEvent。二、头文件:#include <QCloseEvent>在.h文件中protected:void closeEvent(QCloseEvent *eve...原创 2019-04-09 14:12:19 · 10970 阅读 · 2 评论