
qt基础
jklinux
一个linux下的渣渣老码农
展开
-
QT5.12在linux下编译使用mysql数据库驱动
QT5.12 sdk里默认是不支持mysql数据库的,需要加上mysql数据库的支持后重编源码才可以解决.源码可在Qt官网选择相应的版本下载:Qt下载官网http://download.qt.io/archive/qt/也可以通过安装程序得到源码,在以下安装界面时选上Sources即可:安装完成后,Qt完整源码默认在"/opt/Qt5.12.9/5.12.9/Src"Qt里mysql驱动源码在"/opt/Qt5.12.9/5.12.9/Src/qtbase/src/plugins/sqldrive原创 2020-08-18 15:57:31 · 2261 阅读 · 1 评论 -
qt5.7 for android 在linux下开发环境的搭建
在1.下载Qt for android的SDK: qt-opensource-linux-x64-android-5.7.0.run如需在qt上做android程序的开发还需下载: apache-ant android-sdk android-ndk可以从相应的官网上下载,也可以从我的网盘里下载全部所需的工具:链接:http://pan.baidu.com/s/1slyKG原创 2017-05-07 09:15:20 · 8563 阅读 · 5 评论 -
学习QT前需了解的知识
1. 必须要有C++的语言基础。懂得c++的封装,继承,多态,模板等2. 在QT里其实已经使用C++语言封装出各种功能的类,我们最主要的就是学习使用里面的类.归根到底只有两种方法使用别人封装好的类:2.1. 用类创建对象,或者到指针指向动态创建出来的对象然后通过对象或对象指针来访问里面的成员.2.2 通过继承来扩展里面原来的类原创 2017-05-09 12:24:18 · 5692 阅读 · 1 评论 -
01 QT窗口对象与子窗口对象
创建QT的“qmake empty project”后, 有个pro文件. 此文件是用于管理工程,记录有哪些头文件,哪些源文件,使用了QT的哪些库, 不是写代码用的。一般情况下,不要修改它. pro文件里需要加上: QT += gui core //表示此工程用到libQt5Gui.so libQt5Core.so 当我们使用一个类时,注意它的帮助说明: qmake: QT +=原创 2017-05-09 15:32:48 · 4698 阅读 · 1 评论 -
02 自定义按钮类和窗口嵌套
1.实现自定义的按钮类: QPushButton可以设置图标: void setIcon(const QIcon & icon)如按钮btn对象: btn.setIcon(QIcon("/icons/a.png")); // 匿名对象 btn.setGeometry(0, 0, 200, 200); btn.setIconSize(btn.size());自定义原创 2017-05-09 17:51:07 · 758 阅读 · 0 评论 -
03 QT里的多态
多态其实就使用基类的指针,调用派生类里重新实现的虚函数.在QT的类里我们用到的都是虚函数, 没有纯虚函数. QT类里虚函数都是protected的权限. 而且在QT里,虚函数在什么场合,什么时机下会被调用,都已经写好的了。我们只要重新实现虚函数,在相应的场合下就会被调用到。 QWidget的虚函数:Protected Functionsvirtual void actionEvent(QA原创 2017-05-09 17:53:11 · 2844 阅读 · 0 评论 -
04 QT实现一个简单的看图程序
QDir类用于管理目录的操作 QDir(const QString &path = QString()) //创建对象时,可以指定此对象是操作的目录的路径QStringList entryList(const QStringList &nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort) const原创 2017-05-10 11:12:24 · 1472 阅读 · 0 评论 -
05 信号与槽
信号与槽是QT里类对象之间的通信方法.信号(SIGNAL)其实就一个对象,它的状态发生改变时,发出的通知. 如 QPushButton对象, 它的信号有(也需注意信号会继承祖先类的):Signalsvoid clicked(bool checked = false)void pressed()void released()void toggled(bool checked)QT类里写好的信号原创 2017-05-10 12:27:29 · 762 阅读 · 0 评论 -
06 布局管理器
当一个窗口对象上有多个子窗口对象组成时,我们需要调整它们的显示坐标, 而且窗口大小改变时,子窗口对象的大小也不会自动的改变。 布局管理可以方便的管理子窗口对象, 而且可以实现窗口大小改变时,按比例来改变子窗口对象.一个布局管理器对象可以装载多个子窗口对象,也要以装载子布局管理器对象。它们之间的坐标会由布局管理器自动安排,而且也可以指定它们之间的显示比例. 一个窗口对象只能指定一个布局管理器对象原创 2017-05-10 16:17:19 · 633 阅读 · 0 评论 -
07 自定义信号与槽
自定义信号与槽必须要: 1. 用一个头文件, 一个源文件来描述一个类. .h头文件用于定义类里有什么属性成员,函数成员(不实现函数体)等。 类的函数成员在.cpp源文件里实现函数体.2. 在类的private段里写宏<Q_OBJECT>编译出现mywin.cpp:5: undefined reference to `vtable for MyWi原创 2017-05-10 17:44:16 · 834 阅读 · 0 评论 -
08 QT实现批量修改文件名的程序
一目录下有多个文件名,如下:bd_aaaaaaa_1.avi bd_aaaaaaa_2.avi bd_aaaaaaa_3.avi bd_aaaaaaa_4.avi ….修改成: bd_1.avi bd_2.avi bd_3.avi bd_4.avi …首先 需要接收用户的配置信息: 目录的路径, 需要修改的原创 2017-05-11 12:24:43 · 2935 阅读 · 0 评论 -
09 qt画图与贪吃蛇游戏的实现
前面我们用QLabel对象来显示图像,QLabel对象本身也是一个窗口, 意味着窗口对着需要刷新时,共需要刷新两个窗口(其中一个是QLabel对象). 这样效率不高。 窗口对象其实也是画出来的,如在窗口对象在画出来时,也把图像直接画出来的,这样可以少画出一个子窗口对象.这样可以提高效率。重新实现QWidget的虚函数. 此虚函数会在窗口重画时触发, 注意不是直接调用的. virtual void原创 2017-05-11 17:32:13 · 2693 阅读 · 0 评论 -
10 qt udp编程和网络聊天室的实现
Linux系统编程: udp 接收端: socket(AF_INET, SOCK_DGRAM, 0); bind(..) recvfrom(…)udp发送端: socket(...) sendto(..); // udp 也可以connect ,但不是连接,仅是指定目标IP,端口号而已原创 2017-05-12 11:28:20 · 3233 阅读 · 0 评论 -
11 qt多线程
一个进程里可以有多个子线程,但只能有一个主线程(也有就main开始执行的线程). 主线程退出,其它所有的子线程会随着进程结束而结束, QT进程的主线程其实就管理窗口的事件处理,当在窗口对象的函数里做死循环或耗时比较久的事情时,会引发界面不响应的状况。所以为了不让用户抓狂,耗时的工作就放在子线程里完成。Qt里创建子线程有两种方法:1 封装一个继承QThread的类,并实现虚函数run. 在run函原创 2017-05-13 21:24:41 · 750 阅读 · 0 评论 -
12 qt的反射机制应用
在qt里,有这样的场合: 多个对象的信号连接到同一个槽函数,有时在槽函数里需要获取发出信号的对象的属性。而槽函数通常是由信号触发的,所以只要找到发出信号的对象即可。 QObject *QObject::sender() const //函数用于在槽函数里获取发出信号的对象的地址。 QObject是QT类里的基类,通过还需要用qobject_cast<类型*>(QObje原创 2017-05-13 23:14:13 · 1374 阅读 · 0 评论 -
13 QT的QProcess与进程间的通信
QProcess类对象用于调用外部的程序,产生进程,并可以与之进行通信。 用法:QProcess *p = new QProcess; //1. 创建对象 //2.用QStringList准备好程序执行时需要传递的参数。 // 如我们要执行”mplayer /my.avi -slave -quiet” QStringList args; args << “/my.原创 2017-05-14 11:33:19 · 4915 阅读 · 0 评论 -
14 QT TCP网络编程与网络聊天室的实现
tcp编程通过分成服务器端与客户端 在QT里, tcp编程需用到两个类: QTcpServer, QTcpSocket 服务器端: //1. 创建一个QTcpServer对象 QTcpServer *server = new QTcpServer; //2. 调用对象的listen函数成员进行绑定地址与端口号, 并监听端口 server->lis原创 2017-05-14 19:56:53 · 4878 阅读 · 1 评论 -
15 sql语言基础与qt里sqlite, mysql数据库的连接
sql: struct query language 关系型数据通用语法数据库里还有触发器(对数据库里做某种操作时会触发执行函数), 储存器(储存数据会触发的函数)数据表: 相当于描述一个结构体里所有的对象列表 一个数据库里可以有多个数据表, 数据表之间可有一对多关系 字段:表示一个数据表中记录的内容项:如一个员工的数据表可有字段: id, name, tel如要实现一个学生成绩原创 2017-05-14 21:18:06 · 1562 阅读 · 0 评论 -
16 QT 的网络组播程序
在一个linux系统下,有可能有多个网卡, 每网卡又有可能有多个IP地址. 在QT里用QNetworkInterface对象表示一个网卡, QNetworkAddressEntry表示一个网卡的IP地址//以下代码表示获取一个系统里的所有网卡信息,每个网卡的IP地址 QList<QNetworkInterface> list; QList<QNetworkAddressEntry>原创 2017-05-15 11:40:21 · 4042 阅读 · 1 评论 -
17 QT里的uart编程
uart的介绍请参考http://blog.youkuaiyun.com/jklinux/article/details/72124110我们需要配置波特率,数据位,校验位,停止位, 硬件流件. 在QT里已封装成一个名为QSerialPort的类, 还有一个QSerialPortInfo类.qmake: QT += serialport用法: QSerialPortInfo 类用于查看当前系统有哪些可用原创 2017-05-16 12:25:05 · 2784 阅读 · 0 评论 -
18 QT里的摄像头编程
QT里用QCamera类操作摄像头. 用QCameraInfo类获取摄像头的信息qmake: QT += multimedia//获取所有能用的摄像头信息代码: QList<QCameraInfo> list; list = QCameraInfo::availableCameras(); for (int i = 0; i < list.size(); i++)原创 2017-05-16 15:51:06 · 3759 阅读 · 14 评论 -
19 QT 里的Ui文件
当我们的窗口上需要很多的控制时,自己写代码创建控件对象时,比较麻烦. QT里引入ui文件便于我们快速的设计界面.使用ui时, 一个类由三个文件组成. 头文件, 源文件, ui文件(负责通过拖拉控件来设置界面).ui文件其实是xml语言的文件, 用于描述窗口上的属性及控件的属性等 .编译时: QT里的编译器会用”uic”把ui文件转换一个ui_同名的头文件, 此头文件里其实就是把我们以前写的创建对象原创 2017-05-16 17:26:36 · 1010 阅读 · 0 评论 -
20 QT里的声卡编程
声音三要素: 采样率, 量化精度, 声道 通常我们用一位二进制表示两种状态, 如1表示高电平, 0表示低电平。在音频领域里,如只用一位二进制表示声音,那么只能表示发声和不发声两种状态(蜂鸣器)。如果使用过音频分析软件会发现,声音是由连续的不规则的波形来表示, 根本不可能用一位二进制数据表示一个人发出的声音。但可以用多位二进制的数据来表示(音频里通常是用8位或者16位). 如用8位数据表示 0原创 2017-05-17 00:38:27 · 5574 阅读 · 8 评论 -
21 QAudioOutput放音的坑与解决方法
其实在写博文http://blog.youkuaiyun.com/jklinux/article/details/72355485时,并没有测试放音,原以为就是一件很容易的事. 为了后期写音视频播放器时可以在QT用QAudioOutput放音(基本上所有案例都是调用SDL放音), 确定可行性。实实在在测试了一回,真的发现了问题。 QAudioOutput *aoutput = new QAudio原创 2017-05-22 01:05:55 · 16890 阅读 · 24 评论 -
22 Qt for android里调用so动态库
因大部分android设备都是用arm 处理器,所以动态库都得用arm的编译器才可以. 而且还得用ndk里提供的arm编译器.ndk里编译器在很深的目录里,它里面有提供一个脚本,把编译器及本身所有的动态库全部集中生成到指定的路径. 我的ndk目录在"/disk3/adt-bundle-linux/android-ndk-r8d" 在终端进入ndk目录后: ./build/tools/原创 2017-05-26 17:45:11 · 6649 阅读 · 23 评论 -
qt5.6移植到arm和arm64
源码包下载 链接:http://pan.baidu.com/s/1slyKG6D 密码:seh2///////qt5.6移植1.解包qt-everywhere-opensource-src-5.6.1.tar.gz配置好交叉编译器.2.修改交叉编译器, vim qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf QMAKE_CC...原创 2017-06-02 16:58:49 · 8311 阅读 · 0 评论 -
qt for android 在windows下搭建开发环境
下载所需的工具包: 链接: https://pan.baidu.com/s/1gfYBWm3 密码: jjbw1 安装qt-opensource-windows-x86-android-5.4.1.exe //注意最好是以管理员的身份来安装, 安装路径不要有中文2 安装jdk 32位系统安装: jdk-7u51-windows-i586.exe 64位原创 2017-07-11 23:51:09 · 3227 阅读 · 0 评论