
Qt
winwonnn
这个作者很懒,什么都没留下…
展开
-
Linux Qt配置PCL库问题记录
问题记录原创 2023-11-04 17:32:10 · 326 阅读 · 0 评论 -
QT GUI仅用于主线程
搞个多线程差点被GUI坑了T_T记录一下相关资料:[1]Qt多线程编程总结(一)警告:所有的GUI类(比如,QWidget和它的子类),操作系统核心类(比如,QProcess)和网络类都不是线程安全的。[2]QT 多线程程序设计尽管QObject是可重入的,但GUI类,特别是QWidget与它的所有子类都是不可重入的。它们仅用于主线程。正如前面提到过的,QCoreApplication::exec()也必须从那个线程中被调用。实践上,不会在别的线程中使用GUI类,它们工作在主线程上,把一些耗原创 2021-05-27 00:48:11 · 307 阅读 · 0 评论 -
Learning Qt 5! (21):Qt Quick 中的模型和视图
Qt 学习之路 2(84):RepeaterQt 学习之路 2(85):动态视图Qt 学习之路 2(86):视图代理Qt 学习之路 2(87):模型-视图高级技术将数据从表现层分离的最基本方法是使用Repeater元素。Repeater元素可以用于显示一个数组的数据,并且可以很方便地在用户界面进行定位。Repeater的模型范围很广:从一个整型到网络数据,均可作为其数据模型。Repea...原创 2019-01-14 21:22:56 · 192 阅读 · 0 评论 -
Learning Qt 5! (22):Canvas和粒子系统
Qt 学习之路 2(88):CanvasQt 学习之路 2(89):Canvas(续)Qt 学习之路 2(90):粒子系统Qt 学习之路 2(91):粒子系统(续)Canvas、粒子系统这些一时半会儿估计还用不上,只是稍作了解。Canvas用来干啥?为了使用脚本化的绘图机制,Qt 5 引入的Canvas元素。Canvas元素提供了一种与分辨率无关的位图绘制机制。通过Canvas,你可...原创 2019-01-14 21:33:17 · 284 阅读 · 0 评论 -
Learning Qt 5! (23):QML存储(待看)
Qt 学习之路 2(92):QML 存储Qt/C++ 提供了强大的QSettings类。QSettings可以帮助我们以独立于操作系统的方式,将程序数据存储到本地。它利用的是操作系统相关的存储结构,或者是以一种通用的 INI 文件保存。QML 引入了一个新的类Settings,顾名思义,它就是QSettings的 QML 版本。...原创 2019-01-14 21:42:12 · 164 阅读 · 0 评论 -
Learning Qt 5! (10):文件及其读写
学习文件操作!Qt 学习之路 2(35):文件Qt 学习之路 2(36):二进制文件读写Qt 学习之路 2(37):文本文件读写一图来看Qt 5中I/O设备的类:看看Qfile的代码:int main(int argc, char *argv[]){ QApplication app(argc, argv); /*这个in.txt文件要自己建,放在项目的build...原创 2019-01-09 15:33:09 · 195 阅读 · 0 评论 -
Learning Qt 5! (11):容器
Qt 学习之路 2(38):存储容器和Qt 学习之路 2(39):遍历容器,涉及到数据结构知识,需再看。摘录几点:所有的容器都可以嵌套。例如,QMap<QString, QList< int > >是一个映射,其键是QString类型,值是QList< int &原创 2019-01-09 19:48:27 · 128 阅读 · 0 评论 -
Learning Qt 5! (12):model/view之模型
Qt 学习之路 2(41):model/view 架构著名的 MVC 模型!MVC 是 Model-View-Controller 的简写,即模型-视图-控制器。在 MVC 中,模型负责获取需要显示的数据,并且存储这些数据的修改。每种数据类型都有它自己对应的模型,但是这些模型提供一个相同的 API,用于隐藏内部实现。视图用于将模型数据显示给用户。对于数量很大的数据,或许只显示一小部分,这样...原创 2019-01-09 23:58:02 · 129 阅读 · 0 评论 -
QNetworkAccessManager使用注意事项
要注意QNetworkAccessManager实例是建立在栈中还是在堆上(new)。由于网络访问所需的时间通常“较长”,当QNetworkAccessManager实例建立在栈中,如QNetworkAccessManager manager时,如果还没有收到QNetworkAccessManager::finished信号而manager已经不存在了,那么connect()函数就一直不会被执行...原创 2019-01-27 15:44:06 · 2685 阅读 · 1 评论 -
读取豆瓣图书API并下载封面图片的Qt程序
豆瓣图书API有XML和JSON两种,以CSAPP 3rd的API为例分别如下:XML:http://api.douban.com/book/subject/isbn/9780134092669JSON:https://api.douban.com/v2/book/isbn/:9780134092669程序中使用的是JSON格式。首先要解析已保存好的.json文件,有以下步骤:1.用QF...原创 2019-01-22 23:50:39 · 1126 阅读 · 0 评论 -
Ubuntu中Qt的Mysql驱动编译
软件版本:Ubuntu 16.04 32位Qt 5.5.1MySQL 5.7首先要安装MySQL的开发库sudo apt-get install libmysql++-dev然后进入Qt源码文件夹中的/qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/sqldrivers/mysql执行qmake命令:qmake "INC...原创 2019-02-27 21:17:57 · 602 阅读 · 1 评论 -
Qt中SQL的使用之判断某个字段是否已存在库中
参考Qt Documentation中的QSqlQuery Class部分。思路如下:首先用SELECT语句进行查询,通过bool QSqlQuery::exec(const QString &query)函数执行查询,但是要注意不能用bool QSqlQuery::exec(const QString &query)的返回值来判断是否存在,因为其返回值只能用来判断语句是否原创 2019-02-27 00:07:35 · 3688 阅读 · 1 评论 -
QZXing不适用于C++11语法?
重新整理写过的程序,发现了一个诡异的问题。将使用了QZXing的源程序包移动到另一个文件夹后,build,出现QZXing中的某个文件出现错误。一步步回溯问题可能出现的地方。发现这个程序最开始的版本中并没有需要C++11支持的语法(如lambda表达式),因此.pro文件中也没有CONFIG += c++11这一句,也许就是这里出了问题。删去.pro文件中的CONFIG += c++11,并且...原创 2019-02-22 22:17:11 · 306 阅读 · 0 评论 -
Learning Qt 5! (9):贪吃蛇
贪吃蛇系列!Qt 学习之路 2(31):贪吃蛇游戏(1)Qt 学习之路 2(32):贪吃蛇游戏(2)Qt 学习之路 2(33):贪吃蛇游戏(3)Qt 学习之路 2(34):贪吃蛇游戏(4)Q&A:1.MainWindow::MainWindow(QWidget *parent): QMainWindow(parent),scene(new QGraphicsScene(th...原创 2019-01-09 11:22:59 · 282 阅读 · 0 评论 -
Learning Qt 5! (20):QML
新的语言——QML!一个很棒的学习QML的网站QmlBook!Qt 学习之路 2(76):QML 和 QtQuick 2Qt 学习之路 2(77):QML 语法Qt 学习之路 2(78):QML 基本元素Qt 学习之路 2(79):QML 组件Qt 学习之路 2(80):定位器Qt 学习之路 2(81):元素布局Qt 学习之路 2(82):输入元素Qt 学习之路 2(83):Qt...原创 2019-01-14 17:31:23 · 1082 阅读 · 0 评论 -
Learning Qt 5! (19):线程
看完进程看线程,该部分待学习了操作系统之后要再看。Qt 学习之路 2(71):线程简介(在开启新的线程之前,程序会被阻塞,甚至点击关闭时会提示没有响应;开启新的线程后就不会阻塞了)Qt 学习之路 2(72):线程和事件循环Qt 学习之路 2(73):Qt 线程相关类Qt 学习之路 2(74):线程和 QObjectQt 学习之路 2(75):线程总结先了解一下线程和进程的区别,看知乎吧...原创 2019-01-14 00:21:20 · 109 阅读 · 0 评论 -
Learning Qt 5! (13):视图、委托和自定义模型
学完模型继续学习视图和委托。Qt 学习之路 2(46):视图和委托视图不仅仅用于展示数据,还用于在数据项之间的导航以及数据项的选择。另外,视图也需要支持很多基本的用户界面的特性,例如右键菜单以及拖放。视图可以提供数据编辑功能,也可以将这种编辑功能交由某个委托完成。视图可以脱离模型创建,但是在其进行显示之前,必须存在一个模型。也就是说,视图的显示是完全基于模型的,这是不能脱离模型存在的。对于用...原创 2019-01-10 21:13:07 · 246 阅读 · 0 评论 -
Learning Qt 5! (14):拖放
Qt 学习之路 2(52):使用拖放:使用系统提供的拖放对象QMimeData进行拖放数据的存储。代码的例子来自 C++ GUI Programming with Qt4, 2nd Edition,有空应学习一下此书。QMimeData的用法:比如使用QMimeData::setText()创建文本,使用QMimeData::urls()创建 URL 对象等。Qt 学习之路 2(53):自定...原创 2019-01-11 11:59:25 · 247 阅读 · 0 评论 -
Learning Qt 5! (15):数据库
Qt与数据库相关的操作,由于没有SQL基础暂时跳过,先Mark一下。Qt 学习之路 2(55):数据库操作Qt 学习之路 2(57):可视化显示数据库数据Qt 学习之路 2(58):编辑数据库外键...原创 2019-01-22 00:19:41 · 169 阅读 · 0 评论 -
Learning Qt 5! (3):动作、资源和对话框
Let’s begin with Qt 学习之路 2(8):添加动作 !mainwindow.h:在MainWindow类中添加了一个私有函数open()和一个私有变量openAction// !!! Qt 5// ========== mainwindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWind...原创 2019-01-06 18:57:35 · 225 阅读 · 0 评论 -
Learning Qt 5! (16):处理XML和JSON
学习之前,先梳理一下HTML、XML和JSON:HTML、XML和JSON学习汇总10分钟掌握XML、JSON及其解析【xml】—html 与 xml 的区别与联系【html】——初识网页的背后开始学习。Qt 学习之路 2(59):使用流处理 XMLQt 学习之路 2(60):使用 DOM 处理 XMLQt 学习之路 2(61):使用 SAX 处理 XML(这个方法要被淘汰了暂时跳...原创 2019-01-11 17:45:28 · 228 阅读 · 0 评论 -
Learning Qt 5! (4):对象模型
堆?栈?parent?析构?首先需要知道的是堆和栈的基本知识:堆和栈的区别(转过无数次的文章)继续学习 Qt 学习之路 2(10):对象模型QObject是以对象树的形式组织起来的。当你创建一个QObject对象时,会看到QObject的构造函数接收一个QObject指针作为参数,这个参数就是 parent,也就是父对象指针。这相当于,在创建QObject对象时,可以提供一个其父对象,我...原创 2019-01-06 23:30:50 · 137 阅读 · 0 评论 -
Learning Qt 5! (5):布局管理器
Qt 学习之路 2(11):布局管理器先看看main()代码:// !!! Qt 5int main(int argc, char *argv[]){ QApplication app(argc, argv); QWidget window; window.setWindowTitle("Enter your age"); /*引入了两个新的组件:QS...原创 2019-01-07 12:32:52 · 140 阅读 · 0 评论 -
Learning Qt 5! (1):Hello,world!
1.首先在ubuntu 16.04中安装Qt 5 & Qt creator:sudo apt-get install cmake qt5-default qtcreator完成后可通过qmake -v命令确认安装的版本:在终端中输入qtcreator即可打开Qt creator。2.Hello World!参考Qt 学习之路 2:Hello, World!Qt Creato...原创 2019-01-03 00:37:33 · 146 阅读 · 0 评论 -
Learning Qt 5! (6):QMessageBox
Learn more about 对话框…在Learing Qt 5! (3)中写不下了,再开一篇。Qt 学习之路 2(15):标准对话框 QMessageBox把void MainWindow::open()中的代码改为如下所示, 使用QMessageBox::question()这个static函数,提供一个带问号图标的对话框,并且其显示的按钮是“是”和“否”两个。/*使用QMessag...原创 2019-01-07 16:48:52 · 160 阅读 · 0 评论 -
Learning Qt 5! (17):访问网络
告别单机时代!Qt 学习之路 2(65):访问网络(1)访问网络要用到的是QNetworkAccessManager类。该类允许程序发送网络请求以及接受服务器的响应。其本身是异步设计!应当做单例使用。...原创 2019-01-12 19:00:49 · 194 阅读 · 3 评论 -
Learning Qt 5! (7):事件
开始学习“事件”!Qt 学习之路 2(18):事件Qt 中的事件和信号槽却并不是可以相互替代的。信号由具体的对象发出,然后会马上交给由connect()函数连接的槽进行处理;而对于事件,Qt 使用一个事件队列对所有发出的事件进行维护,当新的事件产生时,会被追加到事件队列的尾部。前一个事件完成后,取出后面的事件进行处理。但是,必要的时候,Qt 的事件也可以不进入事件队列,而是直接处理。信号一旦...原创 2019-01-08 00:45:16 · 140 阅读 · 0 评论 -
Learning Qt 5! (18):进程
新的篇章——进程。Qt 学习之路 2(69):进程Qt 学习之路 2(70):进程间通信(程序能跑但是不能通信)Qt 5 官方例子在 Qt 中,我们使用QProcess来表示一个进程。这个类可以允许我们的应用程序开启一个新的外部程序,并且与这个程序进行通讯。QT中进程间通信的方法有4种:1.使用共享内存(shared memory)交互:这是 Qt 提供的一种各个平台均有支持的进...原创 2019-01-13 18:31:08 · 232 阅读 · 0 评论 -
Learning Qt 5! (8):事件过滤器
Qt 学习之路 2(21):事件过滤器QObject有一个eventFilter()函数,用于建立事件过滤器:virtual bool QObject::eventFilter ( QObject * watched, QEvent * event );这个函数返回一个 bool 类型,如果你想将参数 event 过滤出来,比如,不想让它继续转发,就返回 true,否则返回 false。...原创 2019-01-08 14:37:47 · 148 阅读 · 0 评论 -
Learning Qt 5! (2):信号槽
今天学习了 Qt 学习之路 2(4):信号槽 & Qt 学习之路 2(5):自定义信号槽所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,用自己的一个函数(成为槽(slot))来处理这个信号。在 Qt 5 ...原创 2019-01-05 00:02:04 · 138 阅读 · 0 评论