QT—学习总结

学习内容:

        QT是一款很轻大而且内部各种类特别完善的软件,让我们在学习时给我们带来了很多的便利,但是也因为这样给我们带来了很多很多的类,很多很多的函数以及很多很多的信号。无法想象要是没有“帮助”这个功能的话在QT上使用各种函数和设计ui界面是多么的恐怖。

信号与槽机制(重点)

        实现两个对象之间的通信的机制,主要涉及函数connect。

        connect函数的形式:
                    connect(对象1 ,对象1发出的信号 , 对象2 ,对对象1发出的信号进行处理);//实现了对象1和对象2的绑定

界面

            QT里提供了三个界面:QDialog类(对话框)、QMainWindow类(主窗体)、QWidget类(窗口)

QDialog类
    提供了一个简单的对话框,一般作为顶级窗口(窗口的最外层),其他窗口部件可以嵌入到该对话框里,该对话框不会嵌入到其他窗口里。

QMainWindow类
    该类提供了菜单栏、工具栏、状态栏、工作区(浮动、漂浮、悬空等)等功能,一般也是不会嵌入到其他窗口里,通常作为顶级窗口

QWidget类
    QWidget类是所有窗口部件的基类,QDialog和QMainWindow等等都是QWidget的子类,可以嵌入到其他窗口里,也可以作为顶级窗口

基础窗口部件

普通按钮(QPushButton)、单选按钮(QRadioButton)、QLabel(标签)、复选框(QCheckBox)、行编辑框(QLineEdit)、单精度自旋框(QSpinBox)、双精度自旋框(QDoubleSpinBox)、组合框(QComboBox)、分组框(QGroupBox)、滑动条(QSlider)、进度条(QProgressBar)、滚动条(QScrollBar)、列表部件框(QListWidget)

对话框

文件对话框(QFileDialog)、消息对话框(QMessageBox)、颜色对话框(QColorDialog)、字体对话框(QFontDialog)、输入对话框(QInputDialog)

主界面(QMainWindow)

工作区(QWidget)、菜单栏(QMenuBar)、工具栏(QToolBar)、状态栏(QStatusBar)

事件及图形系统

1、事件的产生
    内部可以产生事件(定时器事件)、外部可以产生事件(鼠标:左击、右击、双击、滑轮滚动等等,键盘:按键按下、按键释放等等)
2、事件的派送
    对GUI程序来说,事件的派送是通过QApplication类来对事件进行派送,调用QApplication里的exec()函数来进入事件循环状态(监听事件)
3、事件的分发
    QT提供了一个类:QEvent类来负责事件的分发,QEvent类里有event()函数
4、事件的处理
    QT里也提供了相应的事件处理函数来处理事件,keypressevent()、mousepressevent()等等

5、定时器

文件操作

QFile类
    直接用于对文件的操作:The QFile class provides an interface for reading from and writing to files

线程

        QT里创建界面的时候,其实质创建了线程(将界面或者应用程序就放在线程里运行),也称主线程,多线程的提出主要是解决耗时任务
线程类:QThread类

进程

        QT里提供进程的作用:启动外部的应用程序并与之进行通信
进程类:QProcess类

UDP&TCP通信

数据库----QSQLITE

QSqlDataBase类
    设置数据库的基本信息(数据库名称、数据库的账号、密码等等),添加数据库的驱动(QSQLITE)

个人感受:

        最开始看到QT的操作,让我有了一种很熟悉的感觉,感觉和我以前学过的一个语言挺像的 —— matlab,同样是通过代码和界面设计来实现程序的各类操作和显示。但和matlab有很大不同的就是这QT有着很多很多的类,在C++的语言基础上增加了很多封装好的类。让我们使用的时候很方便,但是也给我们造成了需要各种调用很多类的负担。而matlab就不一样,更多的是对于语言的运用,各种调用更多的是编译器自己实现的。还记得我们当时的大作业,让我们写一个图片处理软件,完成实现的流程是十分的简单——先在界面上把各种按钮之类的东西放上去,然后转到代码,实现的代码直接网上搜就行了(这是我们老师当时的原话,记忆很深刻)。然后直接封装好运行,这个软件就完成了。可以说实现得十分的简单。

        但是对于QT的操作来说,更多的是让我们自己去找各种类,每一个不同的按钮,不同的插件都是一个不同的类,一个字符串,一个简单的弹窗,一个简单的输入输出都是各种封装好的类,要实现一个复杂的软件就需要调用很多的类,头文件光是头就有好几十行,然后才是函数声明和变量声明。只能说设计这个软件的人还好是把“帮助”这个功能加入到了软件里面,不然很难想象这玩意能发展起来。

个人学习成果及问题介绍:

        通过一周的QT学习,自己完成了简单的记事本,计算器,局域网聊天系统的编写。

        对于记事本:目前还没完善,还差很多东西,只有实现了打开文件,保存文件,和字体以及文本操作。对于光标的位置定位,状态栏都还没实现。主要是最近时间比较紧,没有时间来完善这个软件,差的东西基本都封装在一些现成的类里面了。唯一难度的就是老师说过的一个新操作 —— 给记事本加入一个插入图片的操作。这玩意还需要点时间考虑。

        对于计算器:目前实现了两个数字之间(浮点数)的各种运算(加,减,乘,除,乘方),对于多个数之间的计算目前实现了连续运算,但是对于增加括号来打乱计算顺序的操作仍存在问题。不过大概思路有了,只差时间对其进行最后的实现了。大概思路:将在输入括号的时候把前面的数据存储到一个新的变量中,然后将括号里面的内容当成一个新的运算,等后括号出现的时候执行等于操作,再把得到的结果带回原来的运算里面。这样就完成了括号的操作。

        对于局域网聊天系统:目前实现了单对单的聊天,但是对于多个客户端通过一个服务器进行聊天的操作还存在问题。前几天在碰壁之后上网查过解决办法,有了思路,但是对于将网上的思路运用到自己的程序中还是出现了问题。我通过创建套接字数组来存储多个套接字文件,然后根据接收到的客户端发过来的对方信息给对应的另一个客户端进行转发信息。就是这么一个简单的操作让我卡了很久,处理起来总是差点意思。

        总结:总之,对于QT的学习,个人掌握勉强,不看帮助多半很难写出一个能跑的程序。对于个人的小程序还需要很多的时间来进行完善,对于QT的掌握也需要时间的积累。另外自我感觉对于QT的编程还是挺有兴趣的。毕竟第一次自己写的程序可以发给一个不需要专门编译器的人用,相比于以前写的程序,发给别人不仅必须要相同的编译器,还需要该路径,不然都无法达到想要的效果。不得不说QT这方面还是挺方便的。

你可能感兴趣的:(学习,qt,c语言)