Qt应用程序开发框架
一、按钮相关接口
- QPushButton 继承自 QAbstructButton 继承自 QWidget 继承自 QObject
- 构造函数:无参构造 带参构造
- auto b = new QPushButton;无参构造
- auto b2 = new QPushButton(文本, parent);带参构造
- 相关接口
- resize 重置大小
- setFixedSize 设置固定大小
- move 设置位置
- setParent 设置父容器
- setText 设置文本
- setFont 设置字体
- setStyleSheet 设置文本样式属性
- show 显示
#include "Widget.h"
#include <QApplication>//应用程序头文件
/*
* QT编辑器快捷键
* 注释 ctrl+/
* 转到定义或声明切换 F2
* 上一步、下一步 alt+← alt+→
*
* 运行 ctrl+R
* 构建 ctrl+B
* */
int main(int argc, char *argv[])
{
QApplication a(argc, argv);//定义应用程序对象
Widget w;//定义空窗口对象
w.show();//调用空窗口子函数,显示窗口
return a.exec();//调用应用程序对象 消息循环函数
}
二、对象树的概念
对象树:QT中的类的继承关系,有一定程度上简化了对象释放操作。由QObject派生出来的类,无需手动释放堆内存,添加到QObject或QObject派生类对象子成员时也无需手动释放
* 程序结束时,QT会自动检测对象树的对象,释放对象前先释放子对象,从而一层一层的最终释放最上层父对象。
自定义按钮子类 MyButton.h
#ifndef MYBUTTON_H
#define MYBUTTON_H
#include <QPushButton>
#include <QDebug>
class MyButton : public QPushButton
{
public:
MyButton();
MyButton(QWidget* p, QString name)
{
setParent(p);
setText(name);
}
~MyButton()
{
qDebug() << "自定义按钮被释放";
}
};
#endif // MYBUTTON_H
MyButton.cpp
#include "Mybutton.h"
MyButton::MyButton()
{
}
main.cpp
#include "Widget.h"
#include <QApplication>//应用程序头文件
/*
* QT编辑器快捷键
* 注释 ctrl+/
* 转到定义或声明切换 F2
* 上一步、下一步 alt+← alt+→
*
* 运行 ctrl+R
* 构建 ctrl+B
* */
int main(int argc, char *argv[])
{
QApplication a(argc, argv);//定义应用程序对象
Widget w;//定义空窗口对象
w.show();//调用空窗口子函数,显示窗口
return a.exec();//调用应用程序对象 消息循环函数
}
Widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>//包含 Qt空窗口头文件
class Widget : public QWidget
{
Q_OBJECT//支持信号 和 槽
public:
Widget(QWidget *parent = 0);//析构函数
~Widget();//析构函数
};
#endif // WIDGET_H
调用类Widget代码
#include "Widget.h"
#include <QPushButton>//包含按钮头文件
#include "Student.h"
#include "Mybutton.h"
//构造函数
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//记忆接口
this->setWindowTitle("设置窗口标题");//设置窗口标题
this->resize(400, 500);//设置窗口大小,宽、高
this->setFixedSize(200, 200);//设置固定窗口大小,窗口不能拖拽改变大小
QPushButton* btn = new QPushButton;
//btn->resize(10, 10);
btn->setParent(this);//设置父类
btn->setText("开始");//设置文本
//设置字体
QFont font("华文行楷", 20, 10, 1);//创建字体对象(字体,大小,加粗,是否倾斜)
btn->setFont(font);
//设置CSS hover鼠标悬浮 pressed鼠标按下 rgba
btn->setStyleSheet("QPushButton{ background-color: red; }\
QPushButton:hover{ background-color: green }\
QPushButton:pressed{ background-color: rgba(170, 155, 221, 1)}");
//左上角为(0, 0)为原点
btn->move(100, 100);//设置按钮位置
btn->show();//显示 按钮
//自定义button
MyButton* myBtn = new MyButton;
myBtn->setParent(this);//设置父类为本窗口,当本窗口释放时,会释放孩子 先释放孩子,后释放父亲
myBtn->setText("自定义按钮");
myBtn->show();
//对比自定义按钮的构造方法
QPushButton* newQPushBtn = new QPushButton("系统按钮", this);
newQPushBtn->move(100, 50);
newQPushBtn->show();
MyButton* mBtn = new MyButton(this, "自定义按钮2");
mBtn->move(100, 0);
mBtn->show();
}
//析构函数
Widget::~Widget()
{
}