
Qt学习和实战
Qt知识的学习,以及一些技巧的实现。Qt控件以及自定义控件的学习与实现。
GreenArrowMan
这个作者很懒,什么都没留下…
展开
-
QT实现优快云上传资源管理助手Demo之(5)功能总结
QT实现优快云上传资源管理助手Demo之(5)功能总结此程序是针对优快云资源管理设计的,功能没有完全实现:下载资源功能有些复杂,没有仔细研究;下载资源、专辑等页面没有进行抓取和解析,下面是已经实现的功能:登录界面:模拟登录网站,输入账号和密码可以登录成功优快云网站主界面、获取用户信息:获取当前积分、等级、资源数等信息;获取上传的资源首页原创 2017-10-26 12:04:34 · 740 阅读 · 0 评论 -
QT实现优快云上传资源管理助手Demo之(4)请求网络图片SVG并显示
QT实现优快云上传资源管理助手Demo之(4)请求网络图片SVG并显示要显示SVG图片,并且显示网络图片,需要先请求图片数据,转为QPixmap,然后使用QLabel进行显示。首先请求网络图片数据,和请求网页数据差不多,并请数据转为QPixmap:QPixmap QtResourceAssistant::loadInternetImage(QString strUrl){ QEv原创 2017-10-25 12:03:56 · 623 阅读 · 0 评论 -
QT实现优快云上传资源管理助手Demo之(3)请求上传资源页面并解析
QT实现优快云上传资源管理助手Demo之(3)请求上传资源页面并解析请求自己上传的资源页面,只需要请求http://download.youkuaiyun.com/my/uploads/就可以了。在请求结果中解析自己的账户相关的信息,比如等级和分数。发起请求:void QtResourceAssistant::downloadInfoRequest(int Page){ connect(原创 2017-10-25 11:38:33 · 825 阅读 · 0 评论 -
QT实现优快云上传资源管理助手Demo之(2)模拟登录优快云网站
QT实现优快云上传资源管理助手Demo之(2)模拟登录优快云网站在登录页面抓包分析Http请求协议内容可以得到具体细节:可以得到请求的网址,请求的方法(POST或者Get)、协议内容、请求成功后的跳转路径、请求的附加参数,如下图所示:从附加的请求参数子串可以看到除了账号和密码外,还有三个字段:lt、execution、_eventId,其中_eventId是固定的,而前两个原创 2017-10-25 10:46:23 · 574 阅读 · 0 评论 -
QT实现优快云上传资源管理助手Demo之(1)抓包分析HTTP协议
QT实现优快云上传资源管理助手Demo之抓包分析HTTP协议使用客户端模拟登录网站和请求链接,都需要知道HTTP请求的协议内容,否则肯定是被拒绝的。而分析HTTP协议的详细内容,就需要抓包。常用的抓包工具HttpWatch、Fiddler、WireShark等,当然一些浏览器也是可以进行抓包分析的。:比如Google浏览器、搜狗浏览器等等。抓包的方法也很简单,在这里使用Google浏原创 2017-10-25 09:44:11 · 1358 阅读 · 0 评论 -
QT安装包的下载
1.可以去官网下载,官网地址:http://download.qt.io/。但是官网有可能有些人可能会打不开或者下载不下来。2.可以去“清华大学开源软件镜像站”下载,有很多开源软件的镜像,其中QT的下载地址是:https://mirrors.tuna.tsinghua.edu.cn/qt/原创 2017-09-28 11:45:48 · 4176 阅读 · 0 评论 -
QComboBox中QAbstractItemView宽度设置
在开发时遇到需要将QComboBox显示Item的View宽度增加,使其宽于QComboBox本身,否则Item中的文本显示不全。设置方法有两种,一是使用styleSheet,而是直接访问QAbstractItemView设置。详细请参见代码:#pragma once#include class QComboBoxEx : public QComboBox{ Q_OB原创 2017-03-13 17:44:32 · 5278 阅读 · 0 评论 -
Qt 侧边栏
通过QToolButton来实现侧边栏,或者说侧边工具栏,可以通过接口直接自由添加按钮,可以设置工具按钮对应的QWidget,进而点击不同的按钮可以显示不同的QWidget。实现代码:#ifndef QSIDEBAR_H#define QSIDEBAR_H#include #include #include #include #include class QSid原创 2016-10-23 13:36:13 · 8060 阅读 · 0 评论 -
Qt之局域网UDP通讯
创建两个QUdpSocket对象,一个用来发送数据,一个用来接收数据。发送数据的QUdpSocket需要绑定本机IP和端口,要不然是收不到数据的。界面最上面的IP输入框是发送到的对方IP地址。中间是显示收到数据。下面的输入框是用来发送数据的。在虚拟机中和本机通讯:Qt没有IP输入框,需要自己去封装,也可以网上下载。我前面也发了一个自己封装的IP输入框,功能大部分和Windows原创 2016-09-12 17:51:26 · 2538 阅读 · 13 评论 -
Qt圆角功能和状态组合按钮,可以显示颜色或者图片
使用两个按钮和一个Label封装了一个功能和状态圆角组合按钮,Label用来显示颜色或者图片。实现的效果如下:显示图片:显示红色:其中颜色或者图片是通过函数设置进去的。两个按钮:前一个是状态按钮,可以Check,表示使用此项功能;后一个按钮是功能按钮,可以Check,表示跳转到此功能对应的选项。两个按钮都有信号,可以通过信号进行连接你需要的槽函数。具体实原创 2016-06-18 16:23:19 · 4595 阅读 · 0 评论 -
Qt 获取CPU信息
在Qt中调用Windows APIGetSystemInfo可以获取CPU的相关信息,使用Qt的界面控件显示在界面上。在实现的过程中遇到了一个问题,就是显示地址信息在界面控件上。试了好几种方法,都不能显示,最后想到了格式化函数sprintf,将地址转为char类型的数组或者指针,再转为字符串就可以正常显示了。如果有人有更好的方法来显示地址,欢迎交流。完整代码:#pragm原创 2016-06-02 15:57:57 · 11077 阅读 · 6 评论 -
Qt 获取Windows内存信息
通过调用Windows API来获取Windows 内存信息,并显示在界面上,通过与Windows 内存管理器对比可以看到结果是正确的。实现的小工具的界面效果与内存管理器对比如下:实现的完整代码:#pragma execution_character_set("utf-8")#ifndef QMEMORYINFO_H#define QMEMORYINFO_H#inclu原创 2016-06-02 11:04:46 · 5811 阅读 · 1 评论 -
Qt 获取硬盘可用字节
在Windows上,Qt 不能直接获取硬盘字节数,以及可用字节数。需要调用Windows API来获取。获取方法很简单,只需要调用GetDiskFreeSpaceEx API就可以得到我们想要的结果。void QVolumeFreeSpace::getVolumeFreeSpace(const QString &path){ std::wstring wPath = path.toSt原创 2016-05-30 11:33:55 · 3254 阅读 · 0 评论 -
Qt实现IP输入框
Qt作为界面框架,已经非常完善了。但是,也不是尽善尽美,IP输入框作为开发中使用很频繁的一个控件,Qt竟然没有实现,也是醉了。不过,我们自己也可以实现,并不是很复杂。先来看下最终实现的效果:使用起来还算顺手,实现了以下一些方便的操作:1.连续输入;2.连续删除;3.任意位置插入;4.自适应大小变化。5.正则匹配,每个值不大于255。设置IP值时,有正则进行验证是原创 2016-05-09 15:36:26 · 20678 阅读 · 6 评论 -
Qt应用程序以管理员身份启动
在做程序的时候,有时候我们需要我们的应用程序拥有管理员权限,这样就可以做一些设置,而且可以防止没有权限修改导致程序出错。编译好的程序,是没有管理员权限的,我们使用的话,需要右键,以管理员身份启动,很麻烦。因为如果没有这样操作,就可能出问题。那么我们怎样使我们的程序每次都以管理员运行呢?其实也不麻烦,只需要设置一些VS就可以了。在工程右键,选择属性:在linker里面原创 2016-05-07 21:15:08 · 10167 阅读 · 0 评论 -
Qt之添加应用程序图标
Qt编译生成的exe,是没有图标的。很是不好看,如下图:主界面,以及任务栏上程序的显示都没有图标:那么如何给应用程序添加图标呢?其实并不复杂:首先,准备一张图片,须是.ico格式的;其次,在工程右键,选择new item,在窗口选择.rc文件,输入名称,创建;再次,在.rc文件中输入:IDI_ICON1 ICON "icon.ico",保存文件;最后原创 2016-05-07 18:50:13 · 8343 阅读 · 0 评论 -
Qt 实现系统托盘,托盘菜单,托盘消息
Qt 实现系统托盘,托盘菜单,托盘消息 系统托盘就是运行的某个程序在电脑右下角的小图标,相信大家都很熟悉。QT 提供了QSystemTrayIcon类用于实现程序的托盘。QT提供了托盘示例,在examples文件夹下面,大家可以自行研究。 下面是我自己进行实现的一个示例,主要实现的功能: 1.托盘显示,托盘图标添加; 2原创 2016-05-05 15:51:04 · 20782 阅读 · 4 评论 -
Qt之拖放
拖放是应用程序内或者应用程序之间数据传递的一种方式。通常是提供数据的复制和移动。拖放主要包括拖动和放下。有些窗口可能只需要提供拖动功能,有些窗口可能只需要放下,有些窗口可能两者功能都需要具备。原创 2016-05-04 17:00:36 · 9050 阅读 · 4 评论 -
给QPushButton添加二级菜单
给QPushButton添加菜单的示例四种方式:Qt学习之给QPushButton添加菜单ActionsContextMenu方法Qt学习之给QPushButton添加菜单CustomContextMenu方法Qt学习之给QPushButton添加菜单DefaultContextMenu方法QPushButton下拉式菜单(是否取消下拉三角,是否check)原创 2016-04-22 17:40:54 · 6853 阅读 · 2 评论 -
QPushButton下拉式菜单(是否取消下拉三角,是否check)
给QPushButton添加菜单的示例,前面已经有了三种方式:Qt学习之给QPushButton添加菜单ActionsContextMenu方法Qt学习之给QPushButton添加菜单CustomContextMenu方法Qt学习之给QPushButton添加菜单DefaultContextMenu方法今天再提供一种方式,就是给QPushButton添加下拉式菜单原创 2016-04-22 11:40:08 · 20736 阅读 · 10 评论 -
Qt(QLabel)实现滚动字幕
滚动字幕,也叫跑马,就是动态显示一行字符。前面实现是使用QTimer控制,直接在槽函数中截取字符串进行显示,只控制字符串在控件的一端显示,超出控件的部分并没有从控件的另一端循环显示出来。于是我重新实现了一种方法,或者说完善了前面的不足吧。使用QTimer控制显示的节奏,在paintEvent中进行截取显示。从左端被截掉的部分会从右端显示出来。难点在于,我们需要依据控件的宽度,控制字符串的显原创 2016-04-21 18:55:40 · 31037 阅读 · 16 评论 -
QT QLabel右跑马显示文字
开发中可能会需要加一些跑马的效果,会使界面看起来很炫,而且可以达到提醒用户的作用。简单实现了右跑马的效果,使用的是QLabel显示的文字,利用QTimer来控制跑马的速度:效果如图:示例代码:#ifndef TEXTTICKER_H#define TEXTTICKER_H#include #include class TextTicker :原创 2016-04-21 11:58:34 · 7696 阅读 · 0 评论 -
Qt QLabel左跑马显示文字
开发中可能会需要加一些跑马的效果,会使界面看起来很炫,而且可以达到提醒用户的作用。简单实现了左跑马的效果,使用的是QLabel显示的文字,利用QTimer来控制跑马的速度:#ifndef TEXTTICKER_H#define TEXTTICKER_H#include #include class TextTicker : public QWidget{ Q_OBJECT原创 2016-04-21 11:23:29 · 3226 阅读 · 0 评论 -
VS 下Qt工程不能生成moc文件的解决方法
选择要moc的类的头文件,鼠标右键,选择property->Item Type:将此项改为Custom Build Tool,然后看到左边会变成Custom Build Tool:选择Custom Build Tool->General:类比其他头文件添加指令和输出路径。原创 2016-03-30 14:29:21 · 10574 阅读 · 0 评论 -
Qt学习之解决QListWidgetItem有重叠时,点一下全部选中的问题
QListWidget在QListView::IconMode模式下,当条目可以移动时,如果发生部分或者全部重叠,那么点击其中一个QListWidgetItem,会同时选中重叠的QListWidgetItem,问题如下图:但是我只想同时选择我点击的那个,解决这个问题,没有找到很好的方法。通过继承mousePressEvent事件来进行处理:void ListWidget::mous原创 2016-03-22 14:49:33 · 5282 阅读 · 0 评论 -
Qt学习之QListWidget删除Item
将QListWidgetItem从QListWidget列表中删除有两种方法可以做到,但也要根据自己的需要进行选择。第一种是QListWidgetItem *takeItem(int row);使用此方法需要知道删除的是第几个Item,并且返回删除的Item指针。第二种是inline void removeItemWidget(QListWidgetItem *item);需要知道删除原创 2016-03-21 10:38:48 · 33328 阅读 · 3 评论 -
Qt学习之QListWidget添加Item
QListWidget是经常使用的,因为可以显示成一行一行的,可以自动显示滚动条,可以很直观的显示条目。QListWidget里面的每一个条目是QListWidgetItem,向QListWidget里面添加QListWidgetItem有两种方式:一种是使用addItems,可以一次性添加多个条目;另一种是使用addItem一个一个的添加。原创 2016-03-19 21:11:06 · 13855 阅读 · 1 评论 -
Qt学习之给QPushButton添加菜单DefaultContextMenu方法
本篇以QPushButton为例实现添加右键菜单,使用DefaultContextMenu方式进行实现。大体思路和前面两篇添加菜单的方式还是差不多的。虽然是以QPushButton为例进行实现,但是对于所有QWidget添加右键菜单都是适合的。不同的是菜单策略,DefaultContextMenu需要继承contextMenuEvent事件,void contextMenuEvent(QC原创 2016-03-19 13:48:32 · 6058 阅读 · 0 评论 -
Qt学习之给QPushButton添加菜单CustomContextMenu方法
上篇也说了,题目虽然说是给QPushButton添加鼠标右键菜单,其实对于所有的QWidget都是适用的。之所以说QPushButton,是以QPushButton为例进行实现,写的类继承自QPushButton。上篇是说使用ActionsContextMenu,现在换一种方法来实现给QWidget添加右键菜单。下面的方法是使用CustomContextMenu方式来实现。使用CustomCo原创 2016-03-19 12:58:55 · 18565 阅读 · 2 评论 -
Qt学习之给QPushButton添加菜单ActionsContextMenu方法
给QPushButton添加右键菜单,其中ActionsContextMenu相对比较方便实现。说是给QPushButton添加右键菜单,其实对于所有的QWidget都是可以的,也就是说这种方法适合给所有的QWidget添加右键菜单。只需要继承QPushButton,然后设置使用Actions Context菜单,创建自己需要的QAction,addAction并且将对应的槽函数和action连接起来,就可以实现了。原创 2016-03-18 10:44:43 · 13149 阅读 · 4 评论 -
Qt学习之QSplitter分割窗口
在Qt开发中,QSplitter是比较常用到的,也就是分割窗口。并且窗口分割处也就是QSplitter的handle是可以随意拖动的。这样,每个窗口的大小就可以按照自己的需要进行调整。QSplitter可以容纳其他Widget,具有布局一样的特性,但是又可以动态调整,可以说是动态布局特性,其内部的Widget可以自由伸缩。原创 2016-03-17 16:50:06 · 16787 阅读 · 8 评论 -
VS201x+Qt5开发,中文乱码解决
VS201x+Qt5开发,中文乱码解决原创 2016-01-10 13:59:34 · 924 阅读 · 0 评论 -
QSlider:groove背景图片随QSlider伸缩而伸缩
项目中使用了QSlider,继承后,给groove和handle都添加了各自的图片。 窗口比较小的时候,QSlider尺寸也正常,没有什么问题。但是当QWidget窗口伸缩变大的时候,因为groove背景图片的尺寸并没有那么大,导致handle可以移动到图片外面去,看起来很别扭。在网上查了很久都只是添加背景图片并没有谈到QSlider伸缩问题。因为我对QSS目前并不是原创 2015-11-06 18:29:06 · 2168 阅读 · 0 评论 -
This application failed to start because it could not find or load the Qt platform plugin
使用QT编译生成的EXE,把需要的依赖库.dll都放在同一目录下面后,点击运行,出现:然后把Qt\Qt5.3.1\Tools\QtCreator\bin目录下面的\plugins文件夹拷贝过去,删掉除了platforms的其他文件夹。。platforms里面删除除了qwindows.dll的其他文件。还是同样的问题。然后去百度,看了很久,试了好几种方法还是没有解决。原创 2014-12-03 17:56:48 · 16820 阅读 · 3 评论 -
QDomDocument setContent 总是返回FALSE
QDomDocument::setContent ( const QByteArray &, bool, QString *, int *, int * ) 中的QByteArray应该是一个正确的Xml文件的字节数组!!如果文件有问题!!那么就不可能吧QByteArray中的值赋给QDomDocument!!返回的结果就始终为false!!原创 2014-08-19 14:23:37 · 4388 阅读 · 0 评论 -
Qt工程在Mac上转为XCode工程
我们在编译QT的工程的时候,一般都会让qmake自动生成,但有时我们需要定制我们的工程,那么就必须改写pro文件。要自己全部写pro文件又有点麻烦,所以,一般都是先进入到运行 qmake -project来生成基本的pro文件。原创 2014-07-29 13:56:54 · 2219 阅读 · 0 评论 -
Qt4升级到Qt5所遇到的问题的解决方法(qt4转qt5的问题及解决方法)
安装好Qt addin后,要修改一下插件路径:在工程里找到这个文件:工程名.vcxproj.user,将里面的Qtdir路径修改为:C:\qt\Qt5.2.1\5.2.1\msvc2010。我的是在C盘。重新build,会出现很多问题:1.Cannot open include file: 'QtNetwork/QHttp': No such file or directory原创 2014-03-04 17:54:00 · 10691 阅读 · 8 评论