一、创建第一个Qt程序
1. 点击创建项目后,选择项目路径以及给项目起名称
名称:不能有中文、不能有空格
路径:不能有中文路径
2. 默认创建有窗口类myWidget,基类有三种选择:QWidget、QMainWindow、QDialog
3. main函数
QApplication a() 应用程序对象,有且仅有一个myWidget w; 实例化窗口对象
w.show(); 调用show函数显示窗口
return a.exec(); 让应用程序对象进入消息循环机制中,代码阻塞到当前行
#include "mywidget.h"
#include <QApplication>//包含一个应用程序类的头文件
//main程序入口 argc命令行变量数量 argv命令行变量的数组
int main(int argc, char *argv[])
{
//a应用程序对象,在QT中,应用程序对象有且仅有一个
QApplication a(argc, argv);
//窗口对象 myWidget父类 -> QWidget
myWidget w;
//窗口对象 默认不会显示,必须调用show方法显示窗口
w.show();
//让应用程序对象进入消息循环,阻塞在这行
return a.exec();
// while(true)
// {
// if(点击叉子)
// {
// break;
// }
// }
}
二、命名规范及快捷键
命名规范:
类名 首字母大写,单词和单词之间首字母大写
函数名 变量名称 首字母小写,单词和单词之间首字母大写
快捷键:
注释 ctrl + /
运行 ctrl + r
编译 ctrl + b
字体缩放 ctrl + 鼠标滚轮
查找 ctrl + f
整行移动 ctrl + shift ↑或者↓
自动对齐 ctrl + i
同名之间的.h和.cpp切换 F4
帮助文档 第一种方式F1 第二种:左侧按钮 第三种:绝对路径
三、QPushButton创建
按钮控件常用API:
创建QPushbutton *btn= new QPushbutton
设置父亲 setParent(this)
设置文本 setText("文字")
设置位置 move(宽,高)
重新指定窗口大小 resize设置窗口标题 setWindowTitle
设置窗口固定大小 setFixedSize
myWidget::myWidget(QWidget *parent):QMainWindow(parent)
{
//创建一个按钮
QPushButton *btn = new QPushButton;
//btn->show();//show以顶层方式弹出窗口控件
//让btn对象 依赖在myWidget窗口中
btn->setParent(this);
//显示文本
btn->setText("第一个按钮");
//按钮重新指定大小
btn->resize(100,30);
//创建第二个按钮 按照控件的大小创建窗口
QPushButton *btn2 = new QPushButton("第二个按钮",this);
//移动btn2按钮
btn2->move(100,100);
//重置窗口大小
resize(600,400);
//设置固定窗口大小
setFixedSize(600,400);
//设置窗口标题
setWindowTitle("第一个窗口");
}
四、对象模型(对象树)
当创建的对象在堆区时,如果指定的父亲是QObject派生下来的类或者QObject子类派生下来的类,可以不用管理释放的操作,将对象会放入到对象树中。
一定程度上简化了内存回收机制。
mypushbutton.h
#ifndef MYPUSHBUTTON_H
#define MYPUSHBUTTON_H
#include <QPushButton>
class MyPushButton : public QPushButton
{
Q_OBJECT
public:
explicit MyPushButton(QWidget *parent = nullptr);
~MyPushButton();
signals:
};
#endif // MYPUSHBUTTON_H
mypushbutton.cpp
#include "mypushbutton.h"
#include<QDebug>
MyPushButton::MyPushButton(QWidget *parent) : QPushButton(parent)
{
qDebug()<<"我的按钮类构造调用";
}
MyPushButton::~MyPushButton()
{
qDebug()<<"我的按钮类析构";
}
mywidget.cpp
#include "mywidget.h"
#include"QPushButton" //按钮控制的头文件
#include"mypushbutton.h"
#include<QDebug>
myWidget::myWidget(QWidget *parent):QMainWindow(parent)
{
//创建一个按钮
QPushButton *btn = new QPushButton;
//btn->show();//show以顶层方式弹出窗口控件
//让btn对象 依赖在myWidget窗口中
btn->setParent(this);
//显示文本
btn->setText("第一个按钮");
//按钮重新指定大小
btn->resize(100,30);
//创建第二个按钮 按照控件的大小创建窗口
QPushButton *btn2 = new QPushButton("第二个按钮",this);
//移动btn2按钮
btn2->move(100,100);
//重置窗口大小
resize(600,400);
//设置固定窗口大小
setFixedSize(600,400);
//设置窗口标题
setWindowTitle("第一个窗口");
//创建一个自己的按钮对象
MyPushButton *myBtn = new MyPushButton;
myBtn->setText("我自己的按钮");
myBtn->move(200,0);
myBtn->setParent(this);//设置到对象树中
myBtn.resize(100,30);
}
myWidget::~myWidget()
{
qDebug()<<"myWidget的析构调用";
}
输出:
我的按钮类构造调用
myWidget的析构调用
我的按钮类析构
五、Qt中的坐标系
左上角为(0,0)点
x以右为正方向
y以下为正方向