一、什么是QT
二、QT软件的获取
QT官方下载
国内中文社区下载
三、QT Creator软件的使用
四、QT的工程分析
QT += core gui widgets #添加QT的三大模块
core 核心模块:提供信号与槽、事件.......
gui 界面模块
widgets 窗体模块
CONFIG += c++11 #使用c++11编译器进行代码编译
SOURCES += \ #添加源文件
main.cpp \
mainwindow.cpp
HEADERS += \ #添加头文件
mainwindow.h
FORMS += \ #添加界面
mainwindow.ui
//QMainWindow类的头文件
#include
//开始定义一个命名空间
QT_BEGIN_NAMESPACE
namespace Ui {class MainWindow; }
QT_END_NAMESPACE
//定义一个MainWindow 继承 QMainWindow
class MainWindow : public QMainWindow
{
//QT中信号与槽的宏定义
Q_OBJECT
public:
//构造函数
MainWindow(QWidget *parent = nullptr);
//析构函数
~MainWindow();
private:
Ui::MainWindow *ui;//定义一个UI窗体
};
//添加用户自定义窗体头文件
#include "mainwindow.h"
//添加QT应用类
#include
//主函数
int main()
{
//创建QT应用对象
QApplication a(argc, argv);
//在应用中创建一个窗体
MainWindow w;
//显示窗体
w.show();
//执行应用
return a.exec();//一直轮询这个应用
}
#include "mainwindow.h"
//添加ui_mainwindow.h界面设计头文件,所有的界面设计都在该文件中进行
#include "ui_mainwindow.h"//不需要用户管,自动生成
//构造函数
MainWindow :: MainWindow(QWdiget *parent) : QMainWindow(parent), ui(new Ui :: MainWindow)
{
//调用 设置UI的函数
ui->setupUI(this);//void setupUi(QMainWindow *MainWindow)
}
//释放分配的空间 ui(new Ui::MainWindow)
MainWindow::~MainWindow()
{
delete ui;
}
五、纯手工打造QT 工程
QT += core gui widgets #添加QT三大模块
TEMPLATE = app
CONFIG += c++11
SOURCES += \
main.cpp
#include
//添加QT的应用
#include
//添加主界面的头文件
#include
//添加标签头文件
#include
//添加字体头文件
#include
using namespace std;
int main(int argc, char **argv)
{
cout << "Hello World!" << endl;
//定义一个QT应用
QApplication a(argc, argv);
//添加一个主界面
QMainWindow mywin;
//设置窗体的大小
mywin.setGeometry(200, 200, 800, 480);
//定义一个标签,放在主窗体
QLabel lb(&mywin);
//设置标签的字体
lb.setText("Hello World");
//设置标签的位置
lb.setGeometry(400, 200, 400, 100);
//设置标签的大小
QFont f("宋体", 20);
lb.setFont(f);
//显示主窗体
mywin.show();
//执行应用
return a.exec();
}
六、QT 中的UI 设计(控件)
练习:设置学生的姓名学号,并在窗体中显示
①、使用一个Label控件
②、在mainwindow.cpp源代码里面编写代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->label->setText("你好");//设置字符串
ui->label->setNum(123456);//设置数字
ui->label->setPixmap(QPixmap("D:/picture/1.jpg"));//设置图片位置
}
MainWindow::~MainWindow()
{
delete ui;
}
③、Qlabel 类常用接口
void clear() //清空qlabel
void setMovie(QMovie *movie) //设置一张动态图
void setNum(int num) //设置数字
void setNum(double num) //设置浮点型数据
void setPicture(const QPicture &picture) //设置图片
void setPixmap(const QPixmap &) //设置图片
void setText(const QString &) //设置文字
七、QT中帮助文档的使用
八、QString类的使用
The QString class provides a Unicode character string. More...
Header:
#include //头文件
qmake:
QT += core //模块
//构造函数
QString::QString(const char *str)把一个字符串赋值到 QString 中
QString &append(const char *str) //追加字符串arg() //字符串拼接
例子:
QString msg1 = QString("%1 %2 %3").arg(123).arg("hello").arg(3.14);
void QString::chop(int n) //从右边开始删除字符
int indexOf(const QString &str, int from =0) const //从from的位置开始查找str
int lastIndexOf(const QString &str, intfrom = -1,) const //最后一次出现的位置
QString &insert(int position, const QString&str) //从position位置插入字符串str
QString QString::left(int n) const //取左边4 n个字符
int length() const //返回字符串的长度
QString QString::mid(int position, int n =-1) const //取中间部分字符串
QString &remove(const QString &str) //直接删除 str 字符串
QString &replace(const QString &before,const QString &after) //字符串替换
类型转换:
double toDouble(bool *ok = nullptr) const
float toFloat(bool *ok = nullptr) const
QByteArray toUtf8() const //转换为linux 的文本格式
QString number(long n, int base = 10)//把整形转换为 QSTRING 类型
例子:
//把整形转换为QString 字符串
QString t = QString::number(a);
qDebug() << t;
qDebug() << t.toInt() + 100;
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
#include
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QString msg = "hello";//定义一个字符类型数据
qDebug() << msg;// qDebug()打印信息
msg.append(" world");//追加字符
qDebug() << msg;
QString msg1 = QString("%1 %2 %3").arg(123).arg("hello").arg(3.14);//拼接字符
qDebug() << msg1;
qDebug() << msg1.indexOf("hello");//返回字符最先出现的位置
msg1.replace("hello", "你好");//替换字符
qDebug() << msg1;
int a = 10086;
//把整形转换为字符串
QString msg2 = QString :: number(a);
qDebug() << msg2;
qDebug() << msg2.toInt() + 100;
}
MainWindow::~MainWindow()
{
delete ui;
}
九、QT中窗口的切换
1.新建一个窗体
w = new mywin(this); //记得传递this
,给子窗体,否则无法跳转回来
2.显示新窗体
w->show();
this->hide();
3.跳转回来
//在第二个窗体中,找到父亲窗体
this->parentWidget()->show();
//隐藏当前窗体
this->hide();