一、QT介绍
QT是基于C++的跨平台的用户图形界面开发框架
二、QT的安装
1、Linux系统下
Ubuntu下的有线安装与卸载
ubuntu包管理工具:apt-get install qt-sdk
CentOS包管理工具:yum install XXX
卸载:
apt-get purge qt-sdk
apt-get autoremove qt-sdk
安装:
apt-get 下载下来的包在什么地方?
/var/cache/apt/archives
apt-get install 下载源
/etc/apt/sources.list
Ubuntu下的无线安装与卸载
两种方式:
1、 获取源代码:编译、安装
2、 获取安装包。
apt-get download qt-sdk,仅仅只能下载这一个安装包,大多数时候并不能安装成功,软件本身要依赖一些其他的软件,所以我们要下载其他的依赖包。
进入安装包目录,安装:
安装:dpkg -i *.deb
卸载:
安装的时候要求的是后缀名.deb的安装包,卸载的时候不能通过安装包卸载,要找到那个程序的名字进行卸载。
一般包以下划线 _ 进行组织包名,一般第一个代表程序名称。
awk命令介绍:
awk以行方式处理数据,默认以空格对行数据进行分割
ll | awk '{print $8}'
我们可以用-F这个参数来指定以什么进行分割行数据
单个字符直接跟在F的后面:ll | awk -F: '{print $2}'
如果是字符串,则要单引号:ll | awk -F'4096' '{print $1}'
ll | awk '{print $NF}'; $NF代表最后一列
卸载:
for i in ls | awk -F_ '{print $1}'
; do dpkg -P $i;done
2、windows下安装
网址:www.qt-project.org
三、QT实例
在没有IDE的情况下,在Linux下可以使用以下方式创建qt
1、编写源码main.cpp
#include <QApplication>
#include <QWidget>
int main(int argc,char **argv)
{
QApplication app(argc,argv);
QWidget w;
w.show();
return app.exec();
}
2、生成一个工程管理文件:qmake -project
会生成一个XXX.pro文件
1、 生成Makefile文件:qmake
2、 生成可执行文件:make
如果仅仅这样做,会出错:怎么解决???
在工程管理里面加两个库:gui widgets;
##########################################################
# Automatically generated by qmake (3.0) ?? 4? 5 21:42:37 2017
##########################################################
TEMPLATE = app
TARGET = 01
INCLUDEPATH += .
# Input
SOURCES += main.cpp
QT += gui widgets
这句话是什么意思呢,就是说这个QT程序要额外包含两个库,这两个库呢,一个叫gui,一个叫widgets。以前4.8的时候生成的工程文件自动将这两个库加进去,但是4.8以后为了让程序更加轻量级,有些库就不会自动包含了,要手动包含。
只要更改工程文件Makefile文件会自动跟着变。
3、使用qmake命令生成Makefile
make以下就可以生成一个简单的窗口。
四、在qtcreator编写QT程序
1、在终端上输入qtcreator命令打开qtcreator。
2、创建一个空的项目。
里面只有一个工程管理文件
3、添加一个源文件main.cpp
工程文件会自动生成相应内容
4、编辑源文件,修改工程文件
在工程文件中添加 QT += gui widgets
5、编译运行
点击左下角三角形或者使用 Ctrl+R进行运行程序。
程序分析:
// 应用程序抽象类,抽象的是一个应用程序,表示一个应用程序
#include <QApplication>
// 窗口类,代表窗口
#include <QWidget>
int main(int argc, char **argv)
{
// 定义了一个应用程序对象 app, app就代表当前应用程序
QApplication app(argc, argv);
// 定义了一个窗口对象,代表一个窗口
QWidget w;
// 显示窗口
w.show();
// 设置窗口标题
w.setWindowTitle("ABC");
// app的exec里面有一个消息循环,死循环,处理消息(事件)
return app.exec();
}