![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
QT
王者之路001
解决问题才是王道!
展开
-
QT之QEvent机制
1.QEvent简介 QEvent是QT的事件机制。QT的事件机制,肯定是借鉴了Windows的消息机制。Windows把所有的鼠标键盘以及内部事件都当作消息,并放进消息处理机制处理。QT本身,是把各个操作系统的API进行调用。Windows的消息机制,是一个非常简单有效的机制,QT作为借鉴,不为过。 QEvent是QT的事件机制的基础;QEvent可以被QOject灵活运动,使事件得到接收和响应。 Qt的主事件循环(QCoreApplication :: ex...原创 2020-05-25 21:01:58 · 2911 阅读 · 0 评论 -
tinybind编译和运行
1.背景 XML是一种极好的语言,可以对现实实际和项目进行合理描述。XML解析也有各种成熟的方案。C++是一种常用的语言,有成熟的XML解析工程用于C++。但XML直接转C++的结构体,是一种不太好完成的事情。于是,各种搜资料,发现tinybind是一种比较好的XML与C++互相转换的工具。2.遇到的问题 下载tinybind有两个地址: 1)ht...原创 2020-04-21 17:10:11 · 414 阅读 · 0 评论 -
ubuntu linux 环境下的QT程序打包
理论上来说,每一个程序都有自己的运行环境;所以,当程序完成后进行发布,应该提供发布包。在Windows上,具有打包工具;典型的打包工具如Advanced Installer。这些打包工具本身上就是把程序和其依赖库选择到相应库上进行安装。Linux属于命令行系统,打包工具显然不是必须的;但相应的程序是可以制作的。提供的参考程序如下:#!/bin/sh src="程序名" ...原创 2020-04-14 18:42:14 · 1002 阅读 · 0 评论 -
ubuntu QT Creator Fatal IO error 2 (没有那个文件或目录) on X server :0
这几天,碰到一个很奇怪的问题,用QT Creator 编写的程序,在Windows上运行良好;移植到MAC上,也测试运行没有问题。现在计划把程序移植到Ubuntu上。移植完成之后,编译没有问题(在移植到MAC上时已经把Windows与类Unix的语法不兼容的问题全解决了),然后运行程序,发现程序崩溃,并提示如下错误:(程序名:88351): Gdk-WARNING ** 程序名: F...原创 2020-04-14 18:04:07 · 3397 阅读 · 2 评论 -
Ubuntu QT Creator cannot open shared object file: No such file or directory解决方法
Ubuntu QT Creator在调试程序的时候,可能会遇到cannot open shared object file: No such file or directory的问题。这个时候,需要做的事情是:对QT Creator进行设置,调试参数正常,从而保证库运行。当然,要想这一切正确,得保证Ubuntu本身装好了这些库。步骤为:1)项目;2)构建环境;3)修改环境...原创 2020-04-13 12:14:48 · 2729 阅读 · 0 评论 -
QT设计重要特点:QT隐式共享(Implicit Sharing)
隐式共享是QT设计的一个重要特点。QT隐式共享的原文是这样的(来源于https://doc.qt.io/archives/qt-4.8/implicit-sharing.html):“Many C++ classes in Qt use implicit data sharing to maximize resource usage and minimize copying. Implic...原创 2020-03-27 14:10:43 · 345 阅读 · 0 评论 -
STL vector 和 QT QVector的用法差别实例
1.STL与数据结构 STL是C++里最常用的容器(但不是最好的容器)。很多人在计算机学习阶段,对计算机的数据结构课程是一塌糊涂的;这种一塌糊涂的感觉,甚至伴随着很多计算机软件工程师的长期的职业周期。当然,这其实并不能够完全怪计算机学习者,相当一部分原因是中国大学的计算机学习的教材把明明很简单的事物弄成非常复杂的事物。大学的数据结构教材,一般是张乃孝的《算法与数据结构》和严蔚敏《数...原创 2020-01-13 17:58:57 · 2335 阅读 · 0 评论 -
QT 实现动态添加按钮
这几天,在完成一个项目。项目需要实现在tablewidget里面动态添加按钮,且点击按钮消息与点击tablewidget的整行效果相同。思路如下:1)tablewidget响应消息设置,并对应相应槽函数;2)按钮可以灵活添加和删除到tablewidget到特定单元格里;同时,按钮点击事件的消息,和tablewidget相关联;3)按钮消息触发按钮的槽函数,然后抛消息给tablewi...原创 2020-01-10 21:57:04 · 8952 阅读 · 4 评论 -
QT Creator在Windows上工作原理
1.编译器与集成开发环境 编译器,即Compiler,是让源程序生成计算机语言的工具。编译器的工作原理称为编译原理;编译原理号称计算机科学课程的“四大天书”之一。但编译原理,本质就是告诉你,编译器如何通过关键字识别,词法分析,语法分析,语义分析和语言优化,生成可执行程序的过程。随着计算机性能的提高,很多语言已经不使用编译器,开始使用JIT的解释器。但解释器的工作原理,和编译器本身并无...原创 2020-01-07 16:32:01 · 1505 阅读 · 0 评论 -
QT容器QList的contains用法使用限制
今天试图用QT的容器QList因为QList在QT设计的时候,体积足够小,是倡导使用的容器之一。但调用QList但contains接口的时候,发现编译失败。继续查原因,发现QList的contains函数,容器里承载的实体类型必须支持==操作符。比较坑的是,这个实体类型,恰好不支持==操作。于是整个QList的contains失败。关于QList的contains用法,具体可看QT的文档(...原创 2019-10-17 23:04:26 · 6217 阅读 · 0 评论 -
QT QMapIterator
QT的迭代器有两种类型:STL形式和JAVA形式。QT的STL形式的迭代器,和STL的迭代器用法类似,而JAVA形式的迭代器,则提供了一套迭代器类,用于QT容器的迭代。这其中,就有QT的迭代器类QMapIterator。QMapIterator的公共函数如下:QMapIterator(const QMap<Key, T> &map) bool fi...原创 2019-09-25 23:00:18 · 2423 阅读 · 0 评论 -
QT信号与槽
1.QT信号与槽原理 信号与槽,是QT的重要机制之一,是QT最有效的工具或机制之一。 信号与槽,本质就是观察者模式(发布-订阅模式);观察者订阅消息,发布者等消息变化的时候,把消息发布给订阅者。2.QT信号与槽的实现语法 信号与槽的语法实现是: 1)定义信号函数; 2)定义槽函数; 3)连接信号...原创 2019-09-17 21:40:35 · 145 阅读 · 0 评论 -
QT子线程操作UI
在QT中,子线程是无法直接操作UI的,否则会报错,会出现线程冲突之类的错误。可以用两种方法实现:1)使用信号和操操作,子线程给UI所在的主线程发信号;2)使用InvokeMethod方法。方法样例如下:threadtest.h#ifndef THREADTEST_H#define THREADTEST_H#include <QThread>#inclu...原创 2019-09-10 22:55:02 · 7038 阅读 · 0 评论 -
QT之tablewidget的insertrow
tablewidget是QT的常用控件之一,该控件可以让一组数据进行输入,并以列表的方式展示出来。当对tablewidget输入数据的时候,可以对选择插入的位置,插入位置的选择通过insertRow来完成。必须注意的是,必须让tablewidget的组数组数加一,否则tablewidget的行数不变,造成数据没有展示。tablewidget设置行数的方法为setRowCount。更...原创 2019-09-04 23:18:36 · 10164 阅读 · 8 评论 -
QT之容器
1.QT的容器 容器是进行范型开发的一种重要工具;甚至是所谓的面向对象的另一种多态的表现。 QT在STL基础之上,实现了自己的容器。2.QT容器的分类 QT的容器主要由三类: 1)顺序型,以QLi st为代表,包括QLinkedList, QVector, QStack, QQueue; 2)Key-Value型,以...原创 2019-08-28 22:06:38 · 247 阅读 · 0 评论