Qt
项目仓库地址:https://github.com/KikyoShaw/QtWidgetsApplication
离歌漠
天生我才必有用
展开
-
Qt实现滑动条平滑效果
【代码】Qt实现滑动条平滑效果。原创 2023-04-25 11:02:43 · 706 阅读 · 0 评论 -
Qt Installation命名问题导致vs编译Qt项目出错
1.[QtRunWork] Error starting process /moc: 系统找不到指定的文件2.There's no Qt version assigned to project banner.vcxproj for configuration Debug/Win32.Please set a Qt installation in 'Project|Properties|Configuration Properties|Qt Project Settings|Qt Installation原创 2022-08-25 14:53:52 · 881 阅读 · 0 评论 -
Qt动画开发:阴影动画,头像闪烁,窗口淡化,控件移动,曲线动画,旋转动画,连击Combo动画等
Qt动画综合原创 2022-03-25 14:44:12 · 3679 阅读 · 1 评论 -
Qt开发带动画动态进度条控件(水波纹,圆形)
Qt开发带动画动态进度条控件(水波纹,圆形)原创 2022-03-25 14:23:19 · 4514 阅读 · 4 评论 -
Qt开发修改资料页,含日期滑动修改控件,游戏选择控件,头像修改控件等
Qt开发修改资料页,含日期滑动修改控件,游戏选择控件,头像修改控件原创 2022-03-25 11:16:23 · 2521 阅读 · 0 评论 -
Qt实现验证码功能控件
Qt实现验证码功能控件原创 2022-03-25 10:57:02 · 2254 阅读 · 0 评论 -
Qt/QGraphicsEffect使用:图片模糊,透明,着色,阴影实现
Qt/QGraphicsEffect使用:图片模糊,透明,着色,阴影实现原创 2022-03-25 10:30:05 · 1112 阅读 · 0 评论 -
Qt实现歌词播放流光跑马灯特效
Qt实现歌词播放流光跑马灯特效原创 2022-03-25 10:10:11 · 1311 阅读 · 0 评论 -
Qt处理图片:设置图片圆角样式,支持全圆角和部分圆角
全圆角效果:部分圆角效果:/**给图片添加圆角样式*srcPixMap:待处理的图片*rect:图片尺寸*radius:圆角大小***/QPixmap getRoundRectPixmap(QPixmap srcPixMap, QRect rect, int radius){ //不处理空数据或者错误数据 if (srcPixMap.isNull()) { return srcPixMap; } int imageWidth = rect.width(); int ima原创 2020-05-27 18:34:05 · 3689 阅读 · 7 评论 -
谈谈Qt信号与槽
关于Qt信号与槽Qt信号与槽本质类似观察者模式观察者模式(Observer Pattern)定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。但是不能因为Qt信号与槽,误解了观察者模式,观察者模式处理多对多还有些思路需要理清。Qt本身就是基于C++开发而原创 2021-09-24 16:10:14 · 1058 阅读 · 0 评论 -
Qt窗口失去焦点关闭/点击窗口外其他地方关闭
点击窗口外其他地方关闭setWindowFlags(Qt::FramelessWindowHint | Qt::Popup);窗口失去焦点关闭1.示例一bool testWidget::eventFilter(QObject *obj, QEvent *event){ if (Q_NULLPTR == obj) { return false; } if (QEvent::ActivationChange == event->type()) { if(QApp原创 2021-08-28 10:04:30 · 5136 阅读 · 0 评论 -
Qt/C++ GIF圆角化处理
效果图如下GIF和动画有点类似,同样有每一帧图片,要对GIF进行圆角化处理,可以从其每一帧图片做圆角化处理开始。此处需要用到QProxyStyle,来重新处理画图事件QProxyStyle类是一个简化动态重写QStyle元素的方便类。QProxyStyle封装一个QStyle(通常是默认的系统样式),以便动态重写画图或其他特定的样式行为。关于更多QProxyStylem_gifSize:QSize类型,需要处理gif的尺寸m_radius:int类型,需要处理的圆角大小generateP原创 2021-07-05 16:27:36 · 733 阅读 · 0 评论 -
Qt封装Base64加解密接口
QString encodeData(const QString & str, bool bDecode){ if (str.isEmpty()) return str; QByteArray data = str.toUtf8(); if (bDecode) data = data.fromBase64(data); static QByteArray key1 = "AC7028AA5A234EFBA6F5"; static QByteArray key2 = "E7EAAB原创 2021-06-21 09:15:43 · 246 阅读 · 0 评论 -
Qt/C++获取应用软件版本号(ProductVersion/FileVersion)
void getFileVersionInfo(QString &strProductVersion, QString &strFileVersion){ QString fullName = QCoreApplication::applicationFilePath(); std::string strTemp = fullName.toStdString(); LPCSTR str_path = strTemp.c_str(); DWORD vHandle = 0; DWO.原创 2021-06-18 10:17:07 · 2392 阅读 · 1 评论 -
QLineEdit修改密文显示样式/QLineEdit限制只能输入字母,数字+字母,屏蔽中文输入法
QLineEdit默认显示的是实心圆点,HTML代码是9679,代表的就是Unicode表中实心圆点。可以通过设置lineedit-password-character:(HTML代码)来设置不同密文显示样式下面拿爱心来显示举例首先设置QLineEdit支持密文显示通过Unicode表可以查到爱心的HTML代码是9829Unicode 字符百科在线编码解码设置lineedit-password-characterQLineEdit{lineedit-password-characte原创 2021-05-08 17:37:04 · 1690 阅读 · 0 评论 -
Qt遍历文件夹下的文件、获取文件详细信息及执行文件操作
QDir:获取指定文件夹下的所有文件示例代码QString path = "xx/xx/xx/";QDir dir(path);if (!dir.exists()) { qInfo() << "dir is null"; return;}//设置过滤器dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);dir.setSorting(QDir::Name | QDir::IgnoreCase); //按照原创 2021-04-21 09:42:46 · 5222 阅读 · 1 评论 -
Qt/C++获取指定进程,判定进程是否存在,并结束进程
QProcess方法1.判断进程是否存在bool checkProcessByQProcess(const QString &strExe){ bool bResult = false; // 判断进程是否存在 QProcess tasklist; tasklist.start("tasklist", QStringList() << "/NH" << "/FO" << "CSV" << "/FI" << QStr原创 2021-04-19 11:15:45 · 9255 阅读 · 2 评论 -
Qt浏览器开发:关于CEF开发知识点以及QCef开发原理与使用
关于CEFCEF全称是Chromium Embedded Framework,它是Chromium的Content API的封装库,基于Google Chromium 的开源项目,而Google Chromium项目主要是为Google Chrome应用开发的,而CEF的目标则是为第三方应用提供可嵌入浏览器支持主要组成分为Chromium:基础,网络堆栈,线程,消息机制,log,进程控制,生成Web browser。WebKit:提供DOM解析,布局,事件处理,渲染,HTML5JS的API。V8:原创 2021-03-31 15:06:08 · 10372 阅读 · 2 评论 -
QTextBrowser通过超链接点击一段文本中特定文本实现点击功能
效果图如下实现代码//去除焦点选中ui.textBrowser->setFocusPolicy(Qt::NoFocus);//禁止滚轮滚动ui.textBrowser->verticalScrollBar()->setEnabled(false);//去除文案选中样式connect(ui.textBrowser, &QTextBrowser::copyAvailable, this, [=](bool yesCopy) { if (yesCopy) { QT原创 2021-03-29 13:40:50 · 3310 阅读 · 0 评论 -
Qt通过QSplitter类实现整个窗口内各部分窗口可随意拖拽改变大小
效果图如下:设置各个分裂窗口显示比例ui.splitter_left->setStretchFactor(0, 1);ui.splitter_left->setStretchFactor(1, 4);ui.splitter_left->setStretchFactor(2, 1);拖拉分割线的时候,窗口是否实时显示ui.splitter_left->setOpaqueResize(false); 不让子控件被压缩到大小为0ui.splitter_left->原创 2021-03-24 13:55:31 · 2289 阅读 · 1 评论 -
Qt模仿QQ聊天窗口合并功能
模拟qq打开聊天窗口,打开多个聊天窗口时,窗口合并效果图如下:实现机制聊天窗口放在QStackedWidget里管理,聊天条目放在QLIstWidget管理,通过QListWidget的itemSelectionChanged信号去切换对应的聊天窗口首先创建一个包含QStackedWidget类和QListWidget类的窗口类A,用来管理所有聊天窗口,然后创建单一的聊天窗口类B,然后根据聊天窗口数目创建对应的聊天窗口类B,统一放到QStackedWidget类A的窗口内管理窗口类A核心代码c原创 2021-03-23 15:58:58 · 775 阅读 · 0 评论 -
Qt 模仿qq窗口拖到屏幕上方交互问题
模拟qq主窗口交互问题,将窗口停靠电脑屏幕上方时,窗口自动隐藏,鼠标移入窗口出现。为了保证窗口隐藏到电脑屏幕上方的时候,保证点击其他地方,鼠标移入的时候,窗口能正常出现,得将该窗口顶置到所有窗口之前但是为了保证该窗口没隐藏的时候,该窗口不能一直保持在最上层,因此得取消顶置具体实现代码如下:窗口始终显示在上方#ifdef Q_OS_WIN32 QRect screenRect = QGuiApplication::primaryScreen()->availableVirtualGeomet原创 2021-03-22 11:15:22 · 365 阅读 · 0 评论 -
VS+QT双击ui文件用Designer打开时出现未指定错误/无法打开XX.ui文件
在VS与Qt交互中,刚刚会在VS中使用Designer打开某ui文件,工作机制其实是vs利用到了qt vs tools 工具调用designer.exe打开某ui文件下面介绍的方法一就是重置qt vs tools插件这个插件,个人建议不要勾选自动更新该扩展1.重置qt vs tools插件打开vs工具中扩展与更新选项,找到qt vs tools插件注意版本过高也容易导致打开Designer出现问题,可以卸载安装之前的版本,然后不勾选自动更新该扩展2.Designer运行问题找到qt程序,运.原创 2021-03-10 12:19:17 · 2948 阅读 · 5 评论 -
Qt实现一个窗口在另一个窗口上移动
一个窗口在另一个窗口上移动,可左移亦可右移,效果如下:实现机制:通过定时器控制,上层窗口不停的在下层窗口上 move N个像素,窗口关系可以是父子关系。核心代码`m_MoveOut.setTimerType(Qt::PreciseTimer);m_MoveOut.setInterval(8);connect(&m_MoveOut, &QTimer::timeout, this, [this] { QPoint pos = QPoint(m_posX, m_posY); mov原创 2021-03-09 11:35:50 · 1469 阅读 · 0 评论 -
Qt实现跑马灯移动文字窗口类
效果图如下实现机制 就是通过计算文字宽带,然后用定时器不断移动文字显示位置,最后调用update触发paintEvent绘画文字显示。1.跑马灯特效的QLabel类定时器控制文本位置移动,其中m_posX代表文字初始位置connect(&m_Timer, &QTimer::timeout, this, [=] { if (isVisible()) { m_PosX -= 2; //移动速度 if (parent) { parent->update();原创 2021-03-08 15:03:38 · 1192 阅读 · 0 评论 -
QPainter绘画一段带多种颜色样式的文本
int pos = text.indexOf(keyWord, 0, Qt::CaseInsensitive);QString text_one = text.mid(0, pos);QString strElidedText_one = fm.elidedText(text_one, Qt::ElideRight, fm.width(text_one), Qt::TextShowMnemonic);painter->setPen(QPen(QColor(255, 255, 255)));pa原创 2021-02-24 14:54:39 · 1891 阅读 · 0 评论 -
Qt实现窗口轮播效果
效果图如下:思路是将需要轮播的窗口重载一个类,放入QStackedWidget中,通过定时器和QPushButton控制QStackedWidget中的窗口切换实现轮播效果。重载一个窗口类命名ImageItemWidget轮播窗口类参数设置class ImageInfo{public: QString logoPath; //头像 QString nickName; //头像说明 int64_t score; //颜值public: void c原创 2020-12-30 14:49:42 · 1160 阅读 · 1 评论 -
QLineEdit自动补全:模拟QQ登录补全账号
效果图如下:首先介绍Qt的QCompleter类,官方文档介绍如下:You can use QCompleter to provide auto completions in any Qt widget, such as QLineEdit and QComboBox. When the user starts typing a word, QCompleter suggests possible ways of completing the word, based on a word list. T原创 2020-12-29 11:21:46 · 393 阅读 · 1 评论 -
Qt编程:QSlider美化,鼠标移入窗口显示滑动条,鼠标移出窗口隐藏滑动条
效果图:实现方法有两种,第一种是重载鼠标移入移出事件 void enterEvent(QEvent * event); void leaveEvent(QEvent * event);但是这种方法无法指定重载该函数的类中子窗口,因此不适合一些应用场景。第二种方法就是事件过滤器eventFilter该方法可以指定到某个控件使用前需要在目标对象上安装该过滤器ui.textEdit->installEventFilter(this);实现代码bool EditSlider::eve原创 2020-11-19 17:18:22 · 1748 阅读 · 0 评论 -
Qt编程:同类型控件使用同一QSS文件实现不同样式
在做Qt项目开发时,会遇到大量重复使用控件样式,这时需要引用QSS文件了。但是同种控件可能要用到不同颜色显示或者其他样式显示,这时候需要改动QSS文件了首先先介绍QSS样式(拿滑动条举例子)以下就是两种不同样式QScrollBar[single="1"]:vertical{ width:4px; background:rgba(255,255,255,0%); margin:0px,0px,0px,0px; padding-top:14px; padding-bottom:14px;}原创 2020-11-09 18:25:22 · 1439 阅读 · 0 评论 -
Qt判断手机号码:匹配手机号码的正则
目前使用的手机号码段如下:手机号码 13[0-9],14[5|7|9],15[0-3],15[5-9],17[0|1|3|5|6|8],18[0-9]移动:134[0-8],13[5-9],147,15[0-2],15[7-9],178,18[2-4],18[7-8]联通:13[0-2],145,15[5-6],17[5-6],18[5-6]电信:133,1349,149,153,173,177,180,181,189匹配正则:^1([358][0-9]|4[579]|66|7[0135678]|原创 2020-08-12 15:24:25 · 2008 阅读 · 0 评论 -
Qt封装URL编解码接口
关于Qt自带的Url解码接口QUrl::fromPercentEncoding无法识别空格字符,会将其转为+,还有%后无法组成url编码规则的也会转成乱码字符。因此需要采用C++的Url编解码规则,自己封装接口。char dec2hexChar(short n) { if (0 <= n && n <= 9) { return char(short('0') + n); } else if (10 <= n && n <= 15) {原创 2020-08-11 17:53:31 · 814 阅读 · 1 评论 -
Qt托盘实现QQ消息闪烁效果
效果图要实现托盘效果,需要用到QSystemTrayIcon类,具体用法参考Qt官方文档QSystemTrayIcon参考下面来说说怎么实现类似QQ托盘来消息后闪烁效果闪烁的机制其实是两张图片在特定的时间内相互变产生的视觉特效,将其中一张图片换成透明的图片就可以模仿QQ闪烁的特效。控制图片相互替换实现就需要用到定时器了,一个定时器控制原本程序托盘的图片,另一个定时器控制透明图片。具体实现代码如下首先创建并初始化托盘类QSystemTrayIcon m_tray;m_tray.setIco原创 2020-08-04 16:58:25 · 2106 阅读 · 0 评论 -
关于Qt绘制大图片无法显示的问题(缩放图片)
Qt在加载图片时会把图片存入缓存(QPixmapCache),有时候图片过大而电脑内存不足的时候,程序会出现崩溃,因此在处理图片的时候可以考虑将图片缩放。本处采用QImageWriter去重新保存文件在qt开发中很容易遇到用QPixmap绘制图片无法显示的问题,而图片却能在windows或者第三方工具下正常显示,原因大部分是因为图片后缀被修改了,这种情况又无法去通过改回后缀名来避免。因此,可以在读写文件的时候,直接去除后缀,通过解析图片文件本身去获取图片格式。bool checkImageSize原创 2020-07-27 17:56:58 · 2353 阅读 · 0 评论 -
基于Qt仿QQ效果实现图片查看器(支持查看GIF)
主要提供两个类,第一个类显示静态图片,第二个类显示动态图片两个类都包含图片缩小放大以及图片移动功能。最后自己封装一个类,根据判断图片是动态还是静态去调用对应的类显示图片效果展示:判断图片类型int showImage::getImageFormat(const QString & fileName){ //BMP格式特征码 unsigned char BMP_Forma...原创 2020-04-22 16:14:12 · 981 阅读 · 3 评论 -
关于QComboBox设置(QListWidget)代理后,下拉框item项拖动出现界面异常解决方法
由于QComboBox下拉框每个item项需要引入一些控件,比如头像,删除按钮等,因此需要引用QListWidget,去添加带头像按钮等控件的窗口来实现,如以下部分代码: m_Accountlist = new QListWidget(); ui.comboBox->setModel(m_Accountlist->model()); ui.comboBox->setView...原创 2020-01-16 16:15:41 · 2591 阅读 · 0 评论 -
Qt(QPropertyAnimation)实现头像边框阴影动态效果
头像框阴影动态效果图:实现代码:首先自定义控件属性Q_PROPERTY(int iBorderRadius READ getBorderRadius WRITE setBorderRadius)创建动画类和阴影效果类 QPropertyAnimation m_ImageAnimation; //阴影动效化对象(动画类) QGraphicsDropShadowEffect m_...原创 2019-10-29 15:40:11 · 1112 阅读 · 4 评论 -
QComboBox自定义样式(重载下拉框)综合用法
首先重载QComboBox,因为想保持下拉框与QComboBox控件间隔,就需要重载QComboBox的showPopup。void vComboBox::showPopup(){ emit sigPopup(); QComboBox::showPopup(); QWidget *popup = this->findChild<QFrame*>(); popup-...原创 2019-09-12 11:46:54 · 14184 阅读 · 39 评论 -
Qt与flash交互实现(播放Flash动画)
播放Flash动画需要引入QAxWidget类,依赖库文件有QAxContainer.lib,QAxServer.lib。在Qt中应用QAxWidget类时,还不能忘记你电脑需要装FlashActiveX插件,切记,Flash不支持64位,所以,代码也只能是32位的。QAxContainer.lib和QAxServer.lib这两个库没有没关系,VS中可以勾选Qt的类选项,然后引用Qt的QA...原创 2019-06-20 21:07:47 · 3012 阅读 · 0 评论 -
Qt实现简单的显示网页(QtWebkit、QtWebEngine、QAxWidget)
首先先说说QtWebkit、QtWebEngine、QAxWidget三种方式显示网页的应用场景QtWebkit:在Qt5.6以前,都是使用QtWebkit组件,但Qt5.6以后,移除了QtWebkit这个组件QtWebEngine:Qt5.6以后的MSVC版本,引进了基于Chromium的浏览器引擎 QtWebEngineQAxWidget:Qt5.6以后的mingw版本,由于移除了QtW...原创 2019-06-21 11:40:10 · 48048 阅读 · 4 评论