
Qt学习
碧海凌云
从平凡到神奇
展开
-
CTK框架介绍
CTK插件框架可以简单的描述为C++的动态组件系统Design CTK插件框架的设计有很大的灵感来自OSGi并且使得应用程序由许多不同的组件组合成一个可扩展模型。这个模型允许通过那些组件间共享对象的服务通信。 框架的分层模型被展示在图片1中包括: Plugins–插件是开发者创建的CTK组件 Services Layer–用动态的方式连接插件通过提供为C++对象提供一个发布-查找-绑定模型。转载 2018-02-27 21:07:12 · 15332 阅读 · 0 评论 -
QT之paintEvent事件
当发生一下情况时会产生绘制事件并调用paintEvent()函数:1.在窗口部件第一次显示时,系统会自动产生一个绘图事件,从而强制绘制这个窗口部件。2.当重新调整窗口部件的大小时,系统也会产生一个绘制事件。3.当窗口部件被其他窗口部件遮挡,然后又再次显示出来的时候,就会对那些隐藏的区域产生一个绘制事件。同时可以调用QWidget::update()或者QWidget::repaint()来强转载 2017-06-13 19:25:42 · 1684 阅读 · 0 评论 -
利用QPixmap显示图片
利用QPixmap显示图片 我们来实现在窗口上显示图片,并将图片进行平移,缩放,旋转和扭曲。这里我是利用QPixmap类来实现图片显示的。一、利用QPixmap显示图片。1.将以前的工程文件夹进行复制备份,我们这里将工程文件夹改名为painter05。(经常备份工程目录,是个很好的习惯)2.在工程文件夹的debug文件夹中新建文件夹,我这里命名为转载 2017-06-13 09:18:22 · 3459 阅读 · 0 评论 -
QT——JPEG图像的压缩与传输
JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,支持24bit真彩色。============================================================//* Jpeg图像压缩并序列化为QByteArray对象 *//QByteArray ByteArray;// QByteArray类提供了一个字节数组转载 2017-06-13 09:06:12 · 2740 阅读 · 1 评论 -
关于QString::toWCharArray 无法解析的外部符号
CommManger.obj : error LNK2019: 无法解析的外部符号 “public: int __thiscall QString::toWCharArray(unsigned short *)const ” (?toWCharArray@QString@@QBEHPAG@Z),该符号在函数 “public: void __thiscall CommManager::Connect(转载 2017-06-05 09:00:41 · 3605 阅读 · 1 评论 -
从 Qt 的 delete 说开来
从 Qt 的 delete 说开来 在C++中学习过程中,我们都知道:delete 和 new 必须配对使用(一 一对应):delete少了,则内存泄露,多了麻烦更大。Qt作为C++的库,显然是不会违背C++的前述原则的。可是:在Qt中,我们很多时候都疯狂地用new,却很少用delete,缺少的 delete 去哪儿了?!注:本文暂不涉及智能指针(smart pointer)相关的东西,你可以考转载 2017-03-12 09:21:14 · 326 阅读 · 0 评论 -
Qt获得焦点和失去焦点处理事件 (Focus事件)
Qt获得焦点和失去焦点处理事件 (Focus事件)方法一:描述:一开始我要实现的目的就是,在一个窗体上有多个可编辑控件(比如QLineEdit、QTextEdit等),当哪个控件获得焦点,哪个控件的背景就高亮用来起提示作用,查了下文档应该用focusInEvent()和focusOutEvent(), 在实际过程中,我犯了十分严重的错误,最开始的时候我是这样做的:我重写了窗体QWidget的这两个函转载 2017-03-28 14:46:59 · 10553 阅读 · 1 评论 -
Qt读写注册表
1、用QSettings写注册表QSettings *reg = new QSettings("HKEY_CURRENT_USER\\Software\\yinhaifan", QSettings::NativeFormat); reg->setValue("registered",true);delete reg;当然reg->setValue还可以写入字符串,整型之类的数据。比如reg->s转载 2017-03-28 14:39:29 · 3461 阅读 · 0 评论 -
Qt中的焦点事件
在应用程序中,都会有一个当前窗口,即当前获得焦点事件的窗口,这个窗口可以接受键盘的输入。当应用有多个窗口时就要使用焦点事件了!Qt中有很好的焦点事件管理,我在这里抛砖引玉了。一个空间要先设置它焦点事件的模式,即窗口如何接受焦点事件(通过鼠标单击、Tab键、不接受焦点事件等)voidsetFocusPolicy ( Qt::FocusPolicy policy )就是设置焦点事件模式的函数,其中函数转载 2017-03-28 14:37:21 · 933 阅读 · 0 评论 -
Qt 如何处理密集型耗时的事情(频繁调用QApplication::processEvents)
有时候需要处理一些跟界面无关的但非常耗时的事情,这些事情跟界面在同一个线程中,由于时间太长,导致界面无法响应,处于“假死”状态。例如:在应用程序中保存文件到硬盘上,从开始保存直到文件保存完毕,程序不响应用户的任何操作,窗口也不会重新绘制,从而处于“无法响应”状态,这是一个非常糟糕的体验 。 在这种情况下,有一种方法是使用多线程,即在子线程中处理文件保存,主线程负责界面相关。 而如转载 2017-03-03 21:24:50 · 8863 阅读 · 0 评论 -
Qt 对话框的使用
Qt 对话框的使用 - romi - 博客园 Romi-知行合一 轻轻的风轻轻的梦,轻轻的晨晨昏昏,淡淡的云淡淡的泪,淡淡的年年岁岁。 posts - 119, comments - 79, trackbacks - 0, articles - 0 博转载 2017-03-03 20:54:18 · 411 阅读 · 0 评论 -
在QT中采用多线程下载文件
在QT中采用多线程下载文件这里的线程是指下载的通道(和操作系统中的线程不一样),一个线程就是一个文件的下载通道,多线程也就是同时开起好几个下载通道.当服务器提供下载服务 时,使用下载者是共享带宽的,在优先级相同的情况下,总服务器会对总下载线程进行平均分配。不难理解,如果你线程多的话,那下载的越快。现流行的下载软件 都支持多线程。 思路: 1:用阻塞的方式获取目标地址的HTTP头部,得到目转载 2017-01-19 15:36:12 · 5191 阅读 · 2 评论 -
Qt paintevent事件
一.主要理解一下几个方法和属性: 1.QWidget * QScrollView::viewport () const 2.void QWidget::paintEvent ( QPaintEvent * ) [虚 保护] 3.void QWidget::repaint ( int x, int y, int w, int h, bool erase = TRUE ) [槽] 4.void转载 2017-06-13 19:32:55 · 462 阅读 · 0 评论 -
Qt控件样式 Style Sheet Demo
Qt – 一个跨平台应用程序和UI开发框架;它包括跨平台类库、集成开发工具和跨平台 IDE,使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序;深感强大的功能就是支持校本化和样式文件化,对于做web开发的同学能很快上手,强烈推荐。以下是Qt部分控件的样式写法例子,仅作参考,看着跟css3是不是很像。 1 *{font-size:15px;f转载 2017-08-09 19:16:54 · 2327 阅读 · 0 评论 -
Qt之HTTPS登录
简述HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容需要SSL。它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用转载 2017-12-22 16:53:12 · 9649 阅读 · 0 评论 -
Qt之图形(绘制文本)
简述前面讲解了 Qt 图形的基本绘制,包括: 直线、弧线、矩形、椭圆、图片、多边形,以及其它一些高级用法,比如:渐变、转换等。本节主要分享文本的绘制。主要通过 QPainter 的 darwText() 函数来实现,里面包含多个重载函数,其中,可以通过 QRect 来指定绘制的区域,也可以通过 QPoint 来指定绘制的起始点。QFont 类可以辅助设置文本的大小、粗细、字符间距等,然后使用 set转载 2017-12-04 21:25:12 · 827 阅读 · 0 评论 -
Qt之图形(QPainter的基本绘图)
简述Qt 中提供了强大的 2D 绘图系统,可以使用相同的 API 在屏幕和绘图设备上进行绘制,它主要基于QPainter、QPaintDevice 和 QPaintEngine 这三个类。QPainter 用于执行绘图操作,其提供的 API 在 GUI 或 QImage、QOpenGLPaintDevice、QWidget 和QPaintDevice 显示图形(线、形状、渐变等)、文本和图像。Q转载 2017-12-04 21:17:35 · 9420 阅读 · 0 评论 -
Qt之图形(转换)
简述QTransform 用于指定坐标系的 2D 转换 - 平移、缩放、扭曲(剪切)、旋转或投影坐标系。绘制图形时,通常会使用。QTransform 与 QMatrix 不同之处在于,它是一个真正的 3x3 矩阵,允许视角转换,QTransform 的 toAffine() 方法允许将 QTransform 转换到 QMatrix。如果视角转换已在矩阵指定,则转换将导致数据丢失。简述常用接口基本转载 2017-12-04 19:01:25 · 370 阅读 · 0 评论 -
QT之paintEvent事件
当发生一下情况时会产生绘制事件并调用paintEvent()函数: 1.在窗口部件第一次显示时,系统会自动产生一个绘图事件,从而强制绘制这个窗口部件。 2.当重新调整窗口部件的大小时,系统也会产生一个绘制事件。 3.当窗口部件被其他窗口部件遮挡,然后又再次显示出来的时候,就会对那些隐藏的区域产生一个绘制事件。 同时可以调用QWidget::update()或者QWidget::repaint转载 2017-12-04 18:19:00 · 8055 阅读 · 0 评论 -
QPixmap load jpg图片失败的解决方法
QPixmap pixmap; pixmap.load(“C:\1.jpg”); 总是返回false在QT的IDE环境中是能成功加载的,而单独运行却一直加载jpg图片失败。 原因是因为运行exe时,差一个库:imageformats\qjpeg.dllgif文件需要 imageformats\qgif.dll转载 2017-12-04 17:13:07 · 2430 阅读 · 0 评论 -
qt中关于设置颜色(QPalette和QPixmap)
(1).设置背景颜色 QPixmap是一个绘图设备pix=new QPixmap(this->size());//size(0当前客户区的大小(例子见DrawWidgets:)pix->fill(Qt::white);利用QPixmap还可以设置QToolButton颜色:colorBtn=newQToolButton; QPixmap pixmap(20,20); pixma转载 2017-11-16 19:07:26 · 3506 阅读 · 0 评论 -
Qt之等待提示框(QTimer)
简述上节讲述了关于QPropertyAnimation实现等待提示框的显示,本节我们使用另外一种方案来实现-使用定时器QTimer,通过设置超时时间定时更新图标达到旋转效果。简述效果资源源码 效果资源需要几张不同阶段的图标进行切换,这里使用8张。源码QTimer通过setInterval设置100毫秒超时时间,每隔100毫秒后进行图标的更换,达到旋转效果。MainWindow::MainW转载 2017-11-19 20:52:17 · 635 阅读 · 0 评论 -
Qt paintevent事件
Qt paintevent事件 一.主要理解一下几个方法和属性: 1.QWidget * QScrollView::viewport () const 2.void QWidget::paintEvent ( QPaintEvent * ) [虚 保护] 3.void QWidget::repaint ( int x转载 2017-11-10 13:54:25 · 1301 阅读 · 2 评论 -
Qt之界面实现技巧
一、主界面 1.窗口 最小化 最小化 关闭按钮 显示状态自定义 setWindowFlags(Qt::CustomireWindowHint); setWindowFlags(Qt::WindowCloseButtonHint);//只要关闭按钮 setWindowFlags(Qt::WindowFlags type) Qt:转载 2017-08-14 17:00:55 · 500 阅读 · 0 评论 -
QT判断界面当前点击的按钮和当前鼠标坐标
1.QObject::sender( ) 返回发送信号的对象的指针,返回类型为QObject* 。可使用qobject_cast动态类型转换成对应的发送信息的对象(对象类的基类中需要有QObject)。QObject::objectName( ) 返回对象的名称(QString)1 QPushButton*btn = qobject_cast<QPushButton*>(sender());//获取转载 2017-08-10 09:38:09 · 9307 阅读 · 0 评论 -
Qt之qInstallMessageHandler(输出详细日志)
简述安装之前已定义的消息处理程序,返回一个指向前一个消息处理程序。消息处理程序是一个函数,用于打印调试信息、警告信息、严重错误和致命的错误的消息。Qt库(debug模式)包含成百上千的警告信息打印,当发生内部错误时(通常是无效的函数参数)。Qt在release模式下构建还包含这些警告,除非在编译时设置QT_NO_WARNING_OUTPUT和/或QT_NO_DEBUG_OUTPUT。如果你实现自己的转载 2017-01-17 14:30:25 · 910 阅读 · 0 评论 -
从QT4 升级到 QT5
转从Qt4 到Qt5的变化 QT4 升级到 QT5 改动:PC部分:【改 QTDIR 变量】在工程根目录下找到 .user 文件 , 如 InnoTabPlugin.vcxproj.user修改指向你的 QT5 根目录: <PropertyGroup Condition=”’(Configuration)|(Configuration)转载 2017-01-11 18:38:17 · 2191 阅读 · 0 评论 -
Qt中的默认文件夹路径获取方法
比较常用的有两个:1、#include 2、#include 使用1: QTextCodec *codec = QTextCodec::codecForLocale(); QTextCodec::setCodecForCStrings(codec); //获取开始菜单-》程序的路径 qDebug()<<QDesktopServices::storageLocation(QDes转载 2016-12-19 20:19:59 · 2657 阅读 · 0 评论 -
Qt之高级网络操作
简述Qt Network 模块中提供了一些高级别的类,例如:QNetworkRequest、QNetworkReply 和 QNetworkAccessManager,使用常见的协议执行网络操作。在分享的过程中,顺便介绍下 Fiddler,便于我们调试。Fiddler 是一个 HTTP 协议调试代理工具。当然,也可以使用其它 Web/HTTP 调试工具。简述HTTP 消息结构支持的协议请求传转载 2017-01-03 08:51:29 · 3214 阅读 · 2 评论 -
Excel 属性及方法
ActiveWorkbook 当前工作簿,即如果你打开了几个Excel文件,那么你当然正在编辑的Excel文件即ActiveWorkbook ActiveSheet 当前工作簿中的当前工作表,即当前编辑的Excel文件中正在编辑的工作表 ActiveCell 当前工作表中活动单元格 ActiveChart 当前工作簿中的活动图表 Selection 当前被选定的对象 下面详谈各对象及原创 2016-12-21 21:30:33 · 4143 阅读 · 0 评论 -
Qt 从客户端发起http响应 获取网页数据
Qt 从客户端发起http响应 获取网页数据实现代码void Test::GetHttp(QString strServerIP,QString strUserName,QString strPasswd){ QNetWorkMananager *manager = new QNetWorkManager(this); connect(manager, SIGNAL(finishe原创 2016-11-22 19:31:27 · 4762 阅读 · 3 评论 -
用QT获取本机IP
用QT获取本机IP 下面我们就讲解如何获取自己电脑的IP地址以及其他网络信息。这一节中,我们会涉及到网络模块(QtNetwork Module)中的QHostInfo ,QHostAddress ,QNetworkInterface和QNetworkAddressEntry等几个类。下面是详细内容。 我们新建Qt4 Gui Application 工程,工程名为myIP ,选中QtNetwork转载 2016-11-21 20:40:41 · 5756 阅读 · 2 评论 -
QT点击按钮打开一个网址URL
QDesktopServices::openUrl(QUrl(QLatin1String(“http://blog.const.net.cn“)));第一次打开的时候好像要比较长时间,第二次打开时就会很快速。bool QDesktopServices::openUrl ( const QUrl & url ) [static]从上面声明可以看了,该函数为静态函数,可直接使用,但需要引用头文件。#in转载 2016-11-19 10:25:41 · 11061 阅读 · 0 评论 -
Qt5 http协议 获取网页数据
Qt5 http协议 获取网页数据 一、HTTP协议 Qt网络模块提供的API可以实现基于HTTP(Hyper Text Transport Protocol)协议的应用程序。此外, Qt还可以实现多种基于 协议的应用程序, 如位于OSI 7层应用层的FTP、DNS、SNMP。 Qt4.x版本提供了QHttp和QFtp类以支持HTTP和FTP协议。转载 2016-11-18 20:44:09 · 3085 阅读 · 0 评论 -
qdebug使用方法
qdebug使用方法 首先在头文件中包含#include 在需要使用的地方插入: qDebug("intensity:%d",intensity[0][2]); (%d表示整数)输出结果:intensity:195注: %a,%A 读入一个浮点值(仅C99有效) %c 读入一个字符 %d 读入十进制整数 %i 读入十进制,八进制,十六转载 2016-10-05 19:23:32 · 817 阅读 · 0 评论 -
win10上vs2013 + qt5.6.0 环境搭建
一、准备工作 下载Qt安装包和vs插件qt版本: qt-opensource-windows-x86-msvc2013-5.6.0 下载地址: http://download.qt.io/official_releases/qt/5.6/5.6.0/qt-opensource-windows-x86-msvc2013-5.6.0.exevs插件: qt-vs-addin-1.2.5 下载原创 2016-10-02 13:50:26 · 3225 阅读 · 0 评论 -
Qt之连接MySQL
针对Qt之编译MySQL数据库驱动(MSVC)这一节,已经讲述了Qt5.2以及之前的版本针对MySQL的使用情况,有可能很多人还存在一些使用上的问题。Qt如何利用MySQL连接远程数据库?代码如下: //输出可用数据库qDebug()<<"available drivers:";QStringList drivers = QSqlDatabase::drivers();foreach(QStr转载 2016-10-02 16:32:52 · 1371 阅读 · 0 评论 -
qdebug使用方法
qdebug使用方法 首先在头文件中包含#include 在需要使用的地方插入: qDebug("intensity:%d",intensity[0][2]); (%d表示整数)输出结果:intensity:195注: %a,%A 读入一个浮点值(仅C99有效) %c 读入一个字符 %d 读入十进制整数 %i 读入十进制,八进制,十六进制整数 %转载 2016-09-19 13:52:48 · 8725 阅读 · 0 评论 -
QEventLoop在文件下载中的使用
关于Qt的事件循环以及QEventLoop的简单使用 1.一般我们的事件循环都是由exec()来开启的,例如下面的例子:1 QCoreApplicaton::exec()2 QApplication::exec()3 QDialog::exec()4 QThread::exec()5 QDrag::exec()6 QMenu::exec() 这些都开启了事件循环,事件循环首先是一个无原创 2016-12-19 20:32:39 · 1821 阅读 · 0 评论 -
QT中实现Thread与GUI主线程连通方法
本文介绍的是QT中实现Thread与GUI主线程通,目前只会一种,采用信号槽机制。通常情况下,信号和槽机制可以同步操作,这就意味着在发射信号的时候,使用直接函数即可以立刻调用连接到一个信号上的多个槽。然而,当连接位于不同线程中的对象时,这一机制就会变得不同步起来,可以通过修改QObject::connect()的第5个可选参数而改变。connect的第五个参数Qt::QueuedConnection转载 2016-12-29 20:00:10 · 1620 阅读 · 0 评论