这门课程的定位:
Qt是一个基于C++的图形用户界面(GUI)开发框架,但是Qt不仅仅能开发界面,还包括很多传统编程中的计数:多线程、数据库、图像处理、网络通信、文件IO。。。。。等等。
以下是Qt开发的具体产品:
等等等,包含但不限于以上场景。
Qt主要的优势是优良的跨平台特性(一次编程,到处编译)。
比如说:windows、linux、android、SunOS。。。。。。等等
另外Qt也拥有一些常规特性:
本次Qt仍然使用C++课程中的Qt Creator,先更改编码,改为UTF-8
更改完成后,创建正常的支持中文的Qt项目了。操作步骤如下:
项目运行之后,存在两个重要的目录:构建目录和工作目录
存放项目编译过程中生成的文件,这个目录的位置:
如果新创建的项目无法正常运行:
解决方法1:
如果排查了各种问题仍然无法解决,可以尝试取消Shadow build选项,此时项目目录会与工程目录,合二为一,不建议正常使用的用户这样操作。
构建目录在课程最后一天会重点涉及,前期用的比较少。
工作目录就是创建项目时设置的目录,用于存放源代码文件,开发配置文件等。
工作目录可以通过下面这种方式定位:
工作目录中包含的文件有:
本门课程的作业提交方式为工作目录打包。
在windows的文件管理器中,直接双击.pro文件即可导入项目。
用户文件在Qt Creator中不可见,但是确实存在于工作目录中。(项目构建后)。
此文件时Qt 根据当前计算机的开发环境自动生成的文件,每个计算机几乎不通用此文件,因此在提交代码时,先删除此文件。
程序的入口,包含主函数,通常不需要改动主文件代码。
#include "dialog.h"
// QApplication 类管理GUI应用程序的控制流和主设置
#include
int main(int argc, char *argv[])
{
// 创建了一个管家类对象(栈内存)。管理整个应用程序
QApplication a(argc, argv);
// 创建了一个自定义对话框窗口类的栈内存对象
Dialog w;
// 显示(显示窗口)
w.show();
// 进入主时间循环
return a.exec();
}
在Qt中一个自定义类的声明都写在.h中,这个类用到的所有其它类的头文件,也在此文件中引入。
#ifndef DIALOG_H
#define DIALOG_H
// 添加头文件QDialog对话框基类,Qt自带类型通常使用Q开头
#include
// 自定义对话框类
// 继承于QDialog类
class Dialog : public QDialog
{
// 先放着
Q_OBJECT
public:
Dialog(QWidget *parent = 0); // 构造函数
~Dialog(); // 析构函数
};
#endif // DIALOG_H
包含与同名头文件配套的类外定义。
#include "dialog.h"
// 构造函数定义
// parent 参数
Dialog::Dialog(QWidget *parent): QDialog(parent) // 透传构造
{
}
// 析构函数类外定义
Dialog::~Dialog()
{
}
学习Qt一定要学习如果查询文档,通常对于不是很常用内容在编程开发当中都是随用随查的。官方文档就是第一手资料。
有三种查询文档的方式:
1、直接启动Assistant,是一个独立的文件程序。
打开Assistant程序后,点击索引,在输入框中输入想要查询的内容即可。
2、在Qt Creator中直接点击帮助,可以打开一个内嵌的Assistant程序
3、 光标定位到要查询的内容上,双击键盘F1,可以直接跳到对应的文件内容。
在C语言或者C++中,无论是printf或Cout输出的内容都不分前后台,但是Qt中输出内容是区分前后台的。通常前台指的是图形用户界面,用户可以直接通过软件界面看到。
后台值是在Qt Creator的(控制台)中,这里显示的信息用户是不可见的,只对开发者开放。
如果想输出到后台,需要使用QDebug类的qDebug() 函数输出调试信息,支持中文输出,整个的使用方式与cout类似,但是有以下区别:
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
// 添加头文件QDialog对话框基类,Qt自带类型通常使用Q开头
#include
#include
// 自定义对话框类
// 继承于QDialog类
class Dialog : public QDialog
{
// 先放着
Q_OBJECT
public:
Dialog(QWidget *parent = 0); // 构造函数
~Dialog(); // 析构函数
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
// 构造函数定义
// parent 参数
Dialog::Dialog(QWidget *parent)
: QDialog(parent) // 透传构造
{
qDebug() << "构造函数 hello world";
}
// 析构函数类外定义
Dialog::~Dialog()
{
}
当程序运行时,再次运行可能会出现下面的情况,只需要关闭当前运行的项目,重新运行即可。