初始创建空项目相关文件
#include "widget.h"
#include <QApplication>//包含一个应用程序类的头文件
//argc命令行变量的数量,argv命令行变量的数组
int main(int argc, char *argv[])
{
//应用程序对象,在Qt中,应用程序对象有且只有一个
QApplication a(argc, argv);
//窗口对象,Widget父类->QWidget
Widget w;
//窗口对象默认不会显示,必须要调用show方法显示窗口
w.show();
//让应用程序对象进入消息循环,让代码阻塞在这行
return a.exec();
}
#include "widget.h"
//命名规范:
//类名:首字母大写,单词和单词之间首字母大写
//函数名:变量名称 首字母大写,单词和单词之间首字母大写
//快捷键
//注释 ctrl+/
//运行 ctrl+r
//编译 ctrl+b
//查找 ctrl+f
//整行移动 ctrl+shift+上下
//帮助文档 F1
//自动对齐 ctrl+i
//同名之间的.h和.cpp文件切换 F4
Widget::Widget(QWidget *parent)//构造函数的实现,默认参数在声明和实现中只能有一个
: QWidget(parent) //初始化列表
//格式:
// 以一个冒号开始,
// 接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟 一个放在括号中的初始值或表达式。
{
}
Widget::~Widget() {
}//析构函数的实现
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
class Widget : public QWidget
{
Q_OBJECT //宏,允许类中使用信号和槽机制
public:
Widget(QWidget *parent = nullptr);//默认构造函数 只有声明没有实现,有参构造,有默认值
~Widget();//析构函数
};
#endif // WIDGET_H //防止头文件重复包含
创建一个按钮
头文件 #include <QPushButton>
在Widget::Widget(QWidget *parent)
构造函数的实现中创建按钮
Widget::Widget(QWidget *parent)//构造函数的实现,默认参数在声明和实现中只能有一个
: QWidget(parent) //初始化列表
//格式:
// 以一个冒号开始,
// 接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟 一个放在括号中的初始值或表达式。
{
//创建一个按钮
QPushButton *btn = new QPushButton;
btn->show();//show()方法以顶层方式弹出窗口控件
}
show()方法以顶层方式弹出窗口控件
按钮和原窗口是独立的
//让btn对象 依附在Widget窗口中
btn->setParent(this);//把Widget的指针放进去
Widget::Widget(QWidget *parent)//构造函数的实现,默认参数在声明和实现中只能有一个
: QWidget(parent) //初始化列表
//格式:
// 以一个冒号开始,
// 接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟 一个放在括号中的初始值或表达式。
{
//创建一个按钮
QPushButton *btn1 = new QPushButton;
//btn1->show();//show()方法以顶层方式弹出窗口控件
//让btn1对象 依附在Widget窗口中
btn1->setParent(this);//把Widget的指针放进去
//显示文本
btn1->setText("第一个按钮");
//第二种方法创建按钮,会按照控件的大小创建窗口
QPushButton *btn2 = new QPushButton("第二个按钮",this);
//上述代码只显示了一个按钮,第二个按钮把第一个按钮覆盖了
//移动第二个按钮
btn2->move(100,0);
//重置窗口大小
//resize(600,400);//只设定了初始大小,用户仍旧可以拖动修改
//设置固定的窗口大小
setFixedSize(600,400);
//设置窗口标题
setWindowTitle("窗口标题");
}
信号和槽函数
connect( 信号的发送者 ,发送的具体信号 ,信号的接受者, 信号的处理(槽))
信号槽的优点:松散耦合,信号发送者 和 信号的接受者 本身是没有关联的,通过connect连接,将两者耦合在一起
//需求:点击按钮,关闭窗口
//参数1 信号的发送者,参数2 发送的信号(函数的地址),参数3 信号的接受者,参数4 处理的槽函数
//connect(btn2, &QPushButton::clicked, this,&Widge