Qt学习笔记1

一个标准的QWidgets Application包含四个文件:

1.mian.cpp是程序代码,其中的中QApplication a对象表示该应用程序,每个程序中有且只有一个.

   show()方法对于QObject类的对象以顶层方式显示

   a.exec()是进入消息循环,把程序的控制权交给Qt

2.mainwindow.h是窗口的头文件,保存类其中:

Q_OBJECT宏是使得从QObject及其派生类可以使用Qt的signal/slot机制,以及Qt的meta-object系统

3.mainwindow.cpp是窗口的cpp文件定义了窗口的一些函数其中:

QObjec及其派生类的构造函数里都有一个parent参数,Qt使用parent来构建一个树结构进行内存管理,当parent被删除时,已parent为根节点的子树都会被释放内存。

4.main.pro文件类似于.sln文件

 

学会使用Qt的帮助文档,比如我们向窗体中添加一个最常见的按钮控件,他是QPushButton在帮助索引中搜索:

其中给出了其所在头文件和继承关系,和所在的qmake模块(qmake是Qt的工具包)

后面还有他包含的字段,方法,还有使用示例比如:

QPushButton(QWidget *parent = nullptr)//表示控件依附于其他控件
QPushButton(const QString &text, QWidget *parent = nullptr)//其文本显示内容
QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)//向按钮中插入一个图片
move(int x,int y)//移动按钮的位置

在移动时一般以左上角定义为(0,0)点

对于桌面程序程序下面的方法是常用

 

1 setWindowsTitle(tr("text"));//其中tr()函数可以解决中文显示问题

2 serFixedSize(int w,int h);//指定窗口大小后不可更改

3 resize(int width,int high)//定义窗体的大小

 

现在我们了解一下控件的析构方式,之前我们说过每一个控件都依附于一个父控件(除了mainwindow),当一个父控件被析构时他的子控件也会被析构,我们利用pushbutton来验证一下

创建一个mypushbutton类放入test1项目中,修改mypushbutton.h如下

复制代码
#ifndef MYPUSHBUTTOPM_H
#define MYPUSHBUTTOPM_H
#include <QPushButton>
class myPushButtopm : public QPushButton//修改其继承自QPushButton
{
    Q_OBJECT
public:
    explicit myPushButtopm(QWidget *parent = nullptr);
    ~myPushButtopm();
signals:
public slots:
};
#endif // MYPUSHBUTTOPM_H
复制代码

在mybushbutton.cpp修改为

复制代码
#include "mypushbuttopm.h"
#include <QDebug>
myPushButtopm::myPushButtopm(QWidget *parent) : QPushButton(parent)//其调用父类构造函数故使用父类初始化函数进行构造函数
{
    qDebug()<<"创建";//在控制台输出字符
}
myPushButtopm::~myPushButtopm(){
    qDebug()<<"删除";
}
复制代码

 修改主窗口的析构函数

MainWindow::~MainWindow()
{
    qDebug()<<"析构";
}

 

最后结果

创建
析构
删除

 

 虽然打印顺序是先析构再删除但是实际上执行完主窗口的析构函数之后在析构其子类直到析构到没有子类的子类再完全释放他,因此Qt在一定程度上简化了内存释放的操作

 

 

 

 

posted @   LuisLee  阅读(54)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示