Qt入门极简教程

《Qt概述》

Qt是跨平台、C++面向对象的、图形用户界面应用程序
1990年奇趣科技开发
是Linux桌面环境KDE的基础
2014年开始跨平台了
Qt版本:商业版、开源版(帮助文档)
Qt安装:傻瓜式next,测试一般以最快的速度测试。
Qt的优点:
        跨平台、简化了内存回收机制、可支持嵌入式开发
Qt成功案例:
        Linux桌面环境、WPS、google earth、网络电话、…

《QtCreator简介》

QtCreator界面的介绍:

欢迎/编辑/设计/Debug/帮助/…
运行/调试/编译

创建一个工程:

a. Qt Weidget Application
b.Location 选择路径(英文路径)
c.Kits 构件套件,高低版本搭配
d.Detail类的信息,QWidget/QMainWindow/Qdialog
汇总 svn git

main函数介绍:
#include<QApplication> 包含应用程序的头文件
int main() {
    Qapplication a(argc, argv); 应用程序对象有且仅有一个
    //实例化一个窗口对象   mywidget父类->QWidget
    myWigget w;
    //窗口对象默认不显示
    w.show();
    //让应用程序对象进入消息循环机制,代码阻塞当前行
    return a.exec();
}

《命名规范以及快捷键》

工程文件 .pro文件解释:

QT += core gui   //Qt包含的模块
//大于版本4以上,包含widget模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = FirstProject //目标  生成的 .exe程序的名称
TEMPLATE = app  //模板 应用程序模板 还有lib模板
SOURCES +=main.cpp\
                       mywidget.cpp
HEADERS += mywidget.h

mywidget.h 头文件解释

classmyWidget : public Qwidget
{
    Q_OBJECT //宏,允许类中使用信号和曹机制
}

命名规范:

类名 首字母大写、单词之间首字母大写
函数名/变量 首字母小写,单词之间大写

快捷键:

注释 ctrl + /
编译 ctrl + b
运行 ctrl + r
字体缩放 ctrl + 滚轮
查找 ctrl + f
自动对齐 ctrl + i
同名之间的.h / .cpp切换  F4
帮助文档 第一种:F1/esc,第二种 左侧按钮"帮助",
第三种:安装目录bin中的Qt助手

《QPushButton创建》

默认编码为utf-8(中文不会出现乱码)
查询Qt助手 了解所属类,模块,公共函数等

QPushButton *btn = new QPushButton;
// btn->show(); show以顶层方式弹出窗口控件
//设置父亲  让btn按钮依附于myWidget窗口中
btn->setParent(this);
//显示文本
btn->setText("balabala");
//移动窗口
btn->move(x, y);

//重置窗口的大小
resize(int w, int h); // 600*400
//设置固定窗口大小
setFixedSize(w, h);
//设置窗口标题
setWindowTitle("第一个窗口");

扫描二维码关注公众号,回复: 12568181 查看本文章

《对象树》

最祖宗辈的QObject对象
窗口做释放的时候,它会把其中所有的对象都给释放
当创建的对象在堆区的时候,如果指定的父亲是QObject或者是QObject派生下来的类,则可以不用管理释放操作。因为对象会放入对象树中。

《Qt的窗口坐标系》

Qt的(0,0) 点在左上角,X→,Y↓

《信号和槽-点击按钮关闭窗口》

connect(信号的发送者发送的信号信号的接收者处理信号(槽))
信号和槽属于松耦合关系:信号和槽没有关系,用connect关联起来而已
打开帮助文档,查看组件的信号和槽函数,(signal和slot)
eg:connect(myBtn, &myPushButton::click, this, myWidget::close);

《自定义信号和槽》

自定义信号:

// 自定义信号,写在signals下
// 返回值是 void,只需要声明,不需要实现
// 可以有参数,可以重载

自定义槽:

// 早起的qt版本,必须卸载public slots下;高级版本则不考虑位置
// 返回值void;需要声明,也需要实现
// 可以有参数,可以重载

触发自定义信号

emit 自定义信号

《自定义信号和槽发生重载的解决》

需要利用函数指针 明确的指向函数地址

// 函数指针指向函数地址
// 成员函数的指针前面要加上作用域
void (Teacher::*teacherSignal)(QString) = &Teacher::hungry;
void (Student::*studentSlot)(QString) = &Student::treat;

QString 转为char*

1. qDebug()<<"请老师吃饭,给他吃:"<<foodname.toUtf8().data()
2. qDebug()<<"请老师吃饭,给他吃:"<<foodname.toStdString().c_str()

信号和槽,多对多的关系
信号和槽的参数类型必须一致,个数可以不同,且信号参数个数>槽函数个数
emit可以触发信号
函数指针指向重载过后的信号槽,
槽的实现可以使成员函数,也可以使lambda表达式
信号可以触发信号

猜你喜欢

转载自blog.csdn.net/weixin_44937328/article/details/114217353