赞
踩
New Project -->qt widges application
给项目创建名称,名称不能有中文和空格,创建路径中也不能有中文路径,不会报错但是运行时会报错
再下一步,到Kits,中文构建套件,用于选择编译套件,
下一步,类的信息,在创建一个新的qt项目时,都会默认地去创建一个类,这个类就是主窗口的类。其中基类有三种选择
其中QWidge是QMainWindow和QDialog的父类,QWidge是一个最简单的窗口(Widge就是窗口的意思),QMainWindow多了菜单栏,状态栏等,QDialog就是对话框;
首先我们来创建一个基类,创建一个myWidge类,这是会发现系统自动给创建了.h和.cpp
下边的创建界面,会有一些设计界面,里面的控件可以直接进行拖拽,一开始学习可以给它取消,先用代码去实现一些功能会更合适
下一步到汇总的界面,添加到版本控制系统,适用于团队协作svn vss git;可以看到左下角,是创建完这个项目之后会添加哪些文件,
.pro
工程文件,类似于.sln
文件,双击就能打开整个工程;main.cpp
程序入口,另外两个是窗口的.h
文件和.cpp
文件
这之后按理就应该正常显示.h .cpp等文件,但我这边只有.pro文件,
……网上找了很多方法,都不对,最后定位到编译套件这一块,当时选择的时候我以为随便选一个就行,然后重新建工程,把默认的都保留了,再打开就都有了
小插曲,继续~
先看main函数程序入口
#include "mywidget.h"
#include <QApplication>//包含一个应用程序的类的头文件
//main程序入口 argc命令行变量的数量 argv命令行变量的数组
int main(int argc, char *argv[])
{
QApplication a(argc, argv);//a 是应用程序对象,在qt中应用程序对象有且只有一个
myWidget w;//实例化一个窗口对象,它的父类叫QWidge
w.show();//窗口对象默认不会显示,必须要调用show方法才能显示窗口
return a.exec();//让应用程序对象进入消息循环 不会一闪而过, 代码会阻塞到这一行,后面的代码不会被执行
}
显示一个窗口:
运行:ctrl+r
编译:ctrl+b
自动对齐:ctrl+i
同名之间.h和.cpp的切换:F4
头文件:QPushButton
qmake: QT+= WIDGES
按钮就在父窗口中了, 用btn的方法进行显示文本啥的
第二种方法创建按钮
但得到的窗口大小会按着控件大小来, 一般来说这种方法不好
但是我们可以重置窗口的大小, 用resize(w, h);
还有一些操作,比如移动按钮,设置窗口标题,设置固定窗口
当QT中创建对象的时候会提供一个Parent对象指针,具体作用:
当创建一个QObject对象树时, 会看到QObject的构造函数接收一个QObject指针作为参数, 这个参数就是parent即父对象指针,这相当于在创建QObject对象时可以提供一个其父对象,我们创建的这个QObject对象会自动添加到其父对象的children()列表
当父对象析构时,这个列表中的所有对象会被析构,注意这里的父对象不是继承意义上的父对象, 这种机制在GUI程序设计中相当有用,如一个按钮有一个快捷键对象作为其子对象,那么当我们删除按钮的时候, 快捷键也应当被删除。
举例在原来myWidge上派生一个子类mypushButton
,并调用子类的方法
在已有工程上添加C++新文件,继承QPushButton
在myWidge
中创建一个自己按钮的对象
其中 myBtn->setParent(this);
就是设置到对象树中,这样当释放窗口的时候,下面的子类也都会被释放掉
释放顺序和C++一样,构建先父类再子类,但释放先子类再父类,但是他的打印顺序相反
因此qt一定程度上简化了内部回收机制
(0,0)在左上角,X向右增大,Y向下增大
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。