qt入门介绍

1.Qt 是一个跨平台的 C++开发库。主要用来开发图形用户界面(GUI)程序。

Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部;

Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其它功能,比如多线程、

访问数据库、图像处理、音频视频处理、网络通信、文件操作等,这些 Qt 都已经内置了。

2.安装qt


wget http://download.qt.io/archive/qt/5.12/5.12.9/qt-opensource-linux-x64-5.12.9.run
chmod +x qt-opensource-linux-x64-5.12.9.run
sudo ./qt-opensource-linux-x64-5.12.9.run

3.新建一个项目

Console 用来创建控制台程序,Widgets 用来创建GUI程序。

1)QMainWindow:主窗口类,主窗口具有主菜单栏、工具栏和状态栏。 类似于一般的应用程序的主窗口。如果您想做个嵌套的窗口程序开发的软件,不妨选择这个 QMainWindow。

2)QWidget:是可视界面类的基类,也就是说 QMainWindow 类也是由 QWidget 继承封装而来。

所以 QWidget 要比 QMainWindow 功能少一些。

3)QDialog:对话框类,建立一个对话框界面。比较少使用此项作为基类。 一般以 QMainWindow和 QWidget 作为基类的居多。 注因为 QWidget 不带窗口标题栏等, 嵌入式里最好 QWidget。

4.qt工程说明

1)hello.pro 是项目管理文件,这个项目管理文件十分重要,当您加入了文件或者删除了文件, Qt Creator 会自动修改这个*.pro 文件。有时候需要打开这个*.pro 文件添加我们的设置项。

2)Header 分组,这个节点下存放的是项目内所有的头文件*.h。

3)Source 分组,这个节点下存放的是项目内的所有 C++源码文件*.cpp。

4)Forms 分组,这个节点下是存放项目内所有界面文件*.ui。 *.ui 文件由 XML 语言描述组成,编译时会生成相应的 cpp 文件,这样交叉编译器就可以编译它了。

5.项目文件*.pro

QT  += core gui  //添加了 Qt 的支持的模块,core与gui库是Qt的默认设置。
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets //如果是Qt5版本,在main.cpp 中 application 是在 QtWidgets 中的,因此要包含这个库。

/* 配置 */
CONFIG += c++11

DEFINES += QT_DEPRECATED_WARNINGS

/* SOURCES下的是源文件 */
SOURCES += \
    main.cpp \
    mainwindow.cpp
    
/* HEADERS下是头文件 */
HEADERS += \
    mainwindow.h

/* FORMS 下是ui界面文件 */
FORMS += \
    mainwindow.ui

/* qnx:判断是不是 qnx 操作系统,赋值 target.path = /temp/$${TARGET}/bin。 */
qnx: target.path = /tmp/$${TARGET}/bin
/* 如果是unix系统但不是安卓,赋值 target.path = /opt/$${TARGET}/bin。 */
else: unix:!android: target.path = /opt/$${TARGET}/bin
/* 如果target.path为空目录, 赋值 INSTALLS += target。 */
!isEmpty(target.path): INSTALLS += target

6.样式文件*.ui

1) ①是控件栏,有各种各样的控件,上方的 Filter 是过滤器,输入首写字母就可以快速定到我们想要找的控件。

2) ②显示的是我们的窗口程序了,上面已经带有 MainWindow 对象及其几个子对象, 默认MainWindow 就带有菜单栏和状态栏。

3) ③是对象栏, ②处用到的对象都在③处显示。

4) ④是属性栏, 点击③处对象栏的某个对象,就可以在④属性栏里编辑它的属性了。 属性项有很多,包括位置,大小,文字,颜色,字体等等。

7.头文件*.h

点击项目下的 Headers 下的 mainwindow.h,mainwindow.h 一般有与之对应的一个 cpp 文件叫 mianwindow.cpp。 其中 mainwindow.h 包含类的声明, mianwindow.cpp 包含类的实现。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
/* 定义名称空间 Ui ,里面有一个类 MainWindow。
   这个 MainWindow 和下面的 MainWindow 不是同一个对象。
   这个文件里的 MainWindow 类有一个成员*ui 就是指向最下面的 Ui::MainWindow 的指针。这都是为了使用.ui 文件设计界面的。
*/
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    /*  MainWindow 的声明中第一行是 Q_OBJECT,
       这是一个宏,由 Qt 进行处理,这也是 Qt 针对 C++扩展的地方,所有用到信号的类都要加这个宏。 */
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

8.源文件*.cpp

1)Sources 下的 mainwindow.cpp

#include "mainwindow.h"
/*  MainWindow 的实现类中,#include "ui_mainwindow.h"这个文件是 Qt 根据.ui 文件自动生成的,
    也就是说 ui_mainwindow.h 要点击编构建后才生成,我们才能看到这个文件。 
    构建/编译后可以在 debug/release 的目录找到这个文件。
 */
#include "ui_mainwindow.h"

/* 在 MainWindow 构造函数中用“,”隔开,
   new 一个 Ui 中的 MainWindow。
   这里是一种初始化成员的方法。
 */
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    /* 将this(指的是 MainWindow 类的本身),作为参数传到setupUi里,ui界面文件的对象会以this为父对象,所有子对象都将显示在MainWindow里。
       要想使用 ui 里的对象,必须将代码写在 ui->setupUi(this)这句话之后,
       因为 ui->setupUi(this)会先初始化里面的对象,只有初始化里面的对象我们才能使用这个对象。
       注:this 在成员函数的开始执行前构造的,在成员的执行结束后清除。
    */
    ui->setupUi(this); //进行界面初始化
}

MainWindow::~MainWindow()
{
    /* 析构函数里 delete 掉 ui。 
       在 Qt里我们需要在析构函数里 delete的对象一般是 new创建的并且没有父对象的对象。
     */
    delete ui;
}

2)Sources 下的 main.cpp

#include "mainwindow.h"

/* 在每一个使用 Qt 的应用程序中都必须使用一个QApplication 对象。
   QApplication 管理了各种各样的应用程序的广泛资源,比如默认的字体和光标。
 */
#include <QApplication> 

/* argc 是命令行变量的数量,argv 是命令行变量的数组。 */
int main(int argc, char *argv[])
{
    QApplication a(argc, argv); //a 是这个程序的 QApplication。它在这里被创建并且处理这些命令行变量。
    MainWindow w;               //创建一个对象 w,这个对象就是 MainWindow。
    w.show();                   //调用方法 show()。这样程序界面才能显示
    
    /* 这里就是 main()把控制转交给 Qt,并且当应用程序退出的时候 exec()就会返回。
       在 exec()中, Qt 接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。
     */
    return a.exec();  
}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值