1.确定代码书写位置:
.pro:用于生成可执行文件
main.cpp:主函数
widget.cpp:类的函数
一般情况窗口的属性和添加控件和对控件的操作都会在类的构造函书写;
widget.h:类和头文件
2.确定使用那些函数
QT助手:
3.创建第一个按钮
先添加头文件;#include <QPushButton>
(1)创建按钮的第一种方式:
#include "widget.h" #include <QPushButton> Widget::Widget(QWidget *parent) : QWidget(parent) { //修改窗口的标题(第一个窗口) this->setWindowTitle("love"); //设置窗口的大小,设置完成可以拉/*伸 this->resize(800,600); //设置固定大小,设置完成不可拉伸 // this->setFixedSize(500,500); QPushButton *butten=new QPushButton; //定义一个按钮实例子 butten->setParent(this); //设置按钮父对象 butten->setText("确定"); //设置按钮上的文字; butten->move(100,400); //设置按钮位置; butten->setFixedSize(100,50); butten->show(); //显示按钮 } Widget::~Widget() { }
先创建实例按钮,再确定父对象,然后设置按钮属性和显示即可1;
(2)创建按钮的第二种方式:
#include "widget.h" #include <QPushButton> Widget::Widget(QWidget *parent) : QWidget(parent) { //修改窗口的标题(第一个窗口) this->setWindowTitle("love"); //设置窗口的大小,设置完成可以拉/*伸 //this->resize(800,600); //设置固定大小,设置完成不可拉伸 this->setFixedSize(800,600); QPushButton *butten=new QPushButton; //定义一个按钮实例子 butten->setParent(this); //设置按钮父对象 butten->setText("确定"); //设置按钮上的文字; butten->move(100,400); //设置按钮位置; butten->setFixedSize(100,50); butten->show(); //显示按钮 QPushButton *butten2=new QPushButton("取消",this); //设置按钮名字和父对象 butten2->move(600,400); butten2->setFixedSize(100,50); butten2->show(); } Widget::~Widget() { }
3.对象树
解决了对象回收问题
Qt提供了对象树机制,能够自动、有效的组织和管理继承自QObject的Qt对象。
每个继承自QObject类的对象通过它的对象链表(QObjectList)来管理子类对象,当用户创建一个子对象时,其对象链表相应更新子类对象信息,对象链表可通过children()获取。
当父对象析构的时候,其对象链表中的所有(子)对象也会被析构,父对象会自动将其从父对象列表中删除。Qt 保证没有对象会被 delete 两次。开发中手动回收资源时建议使用deleteLater代替delete。
4.自定义按钮类:
(1)新建一个C++类
mybutton.h
#ifndef MYBUTTON_H #define MYBUTTON_H #include <QWidget> #include <QPushButton> class MYbutton : public QPushButton { Q_OBJECT //定义宏可以使用信号和槽机制 public: explicit MYbutton(QWidget *parent = nullptr); //构造函数 //QWidget是QPushButton父类的父类 ~MYbutton(); signals: //信号 public slots: //槽 }; #endif // MYBUTTON_H