qt学习笔记1:创建一个qt项目及一些基础知识

1 新建第一个项目

New Project -->qt widges application
qt学习笔记1:创建一个qt项目及一些基础知识_第1张图片
给项目创建名称,名称不能有中文和空格,创建路径中也不能有中文路径,不会报错但是运行时会报错
qt学习笔记1:创建一个qt项目及一些基础知识_第2张图片
再下一步,到Kits,中文构建套件,用于选择编译套件,
qt学习笔记1:创建一个qt项目及一些基础知识_第3张图片
下一步,类的信息,在创建一个新的qt项目时,都会默认地去创建一个类,这个类就是主窗口的类。其中基类有三种选择
qt学习笔记1:创建一个qt项目及一些基础知识_第4张图片
其中QWidge是QMainWindow和QDialog的父类,QWidge是一个最简单的窗口(Widge就是窗口的意思),QMainWindow多了菜单栏,状态栏等,QDialog就是对话框;
首先我们来创建一个基类,创建一个myWidge类,这是会发现系统自动给创建了.h和.cpp
qt学习笔记1:创建一个qt项目及一些基础知识_第5张图片
下边的创建界面,会有一些设计界面,里面的控件可以直接进行拖拽,一开始学习可以给它取消,先用代码去实现一些功能会更合适
下一步到汇总的界面,添加到版本控制系统,适用于团队协作svn vss git;可以看到左下角,是创建完这个项目之后会添加哪些文件,
qt学习笔记1:创建一个qt项目及一些基础知识_第6张图片

.pro工程文件,类似于.sln文件,双击就能打开整个工程;main.cpp程序入口,另外两个是窗口的.h文件和.cpp文件

这之后按理就应该正常显示.h .cpp等文件,但我这边只有.pro文件,
qt学习笔记1:创建一个qt项目及一些基础知识_第7张图片
……网上找了很多方法,都不对,最后定位到编译套件这一块,当时选择的时候我以为随便选一个就行,然后重新建工程,把默认的都保留了,再打开就都有了
qt学习笔记1:创建一个qt项目及一些基础知识_第8张图片
小插曲,继续~

先看main函数程序入口

#include "mywidget.h"
#include //包含一个应用程序的类的头文件

//main程序入口  argc命令行变量的数量  argv命令行变量的数组
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);//a 是应用程序对象,在qt中应用程序对象有且只有一个
    myWidget w;//实例化一个窗口对象,它的父类叫QWidge
    w.show();//窗口对象默认不会显示,必须要调用show方法才能显示窗口

    return a.exec();//让应用程序对象进入消息循环 不会一闪而过, 代码会阻塞到这一行,后面的代码不会被执行
}

显示一个窗口:
qt学习笔记1:创建一个qt项目及一些基础知识_第9张图片

工程文件的学习

qt学习笔记1:创建一个qt项目及一些基础知识_第10张图片

.h文件

qt学习笔记1:创建一个qt项目及一些基础知识_第11张图片

快捷键

运行:ctrl+r
编译:ctrl+b
自动对齐:ctrl+i
同名之间.h和.cpp的切换:F4

QPushButton创建

头文件:QPushButton
qmake: QT+= WIDGES
qt学习笔记1:创建一个qt项目及一些基础知识_第12张图片按钮就在父窗口中了, 用btn的方法进行显示文本啥的
qt学习笔记1:创建一个qt项目及一些基础知识_第13张图片第二种方法创建按钮
在这里插入图片描述

但得到的窗口大小会按着控件大小来, 一般来说这种方法不好
qt学习笔记1:创建一个qt项目及一些基础知识_第14张图片
但是我们可以重置窗口的大小, 用resize(w, h);
还有一些操作,比如移动按钮,设置窗口标题,设置固定窗口

对象树

当QT中创建对象的时候会提供一个Parent对象指针,具体作用:
当创建一个QObject对象树时, 会看到QObject的构造函数接收一个QObject指针作为参数, 这个参数就是parent即父对象指针,这相当于在创建QObject对象时可以提供一个其父对象,我们创建的这个QObject对象会自动添加到其父对象的children()列表
当父对象析构时,这个列表中的所有对象会被析构,注意这里的父对象不是继承意义上的父对象, 这种机制在GUI程序设计中相当有用,如一个按钮有一个快捷键对象作为其子对象,那么当我们删除按钮的时候, 快捷键也应当被删除。

举例在原来myWidge上派生一个子类mypushButton,并调用子类的方法
在已有工程上添加C++新文件,继承QPushButton
qt学习笔记1:创建一个qt项目及一些基础知识_第15张图片
myWidge中创建一个自己按钮的对象
qt学习笔记1:创建一个qt项目及一些基础知识_第16张图片
其中 myBtn->setParent(this);就是设置到对象树中,这样当释放窗口的时候,下面的子类也都会被释放掉
释放顺序和C++一样,构建先父类再子类,但释放先子类再父类,但是他的打印顺序相反
qt学习笔记1:创建一个qt项目及一些基础知识_第17张图片

因此qt一定程度上简化了内部回收机制

qt中的坐标系

(0,0)在左上角,X向右增大,Y向下增大

你可能感兴趣的:(QT学习,qt,学习,开发语言)