520也在敲代码的Qt学习笔记(一)

 

 

 

 

常用快捷键:

 运行:ctrl+r

编译:ctrl+b
查找:ctrl+f
整行移动:ctrl+shift+方向键
帮助文档:F1
自动对齐:ctrl+i
同名.h和.cpp的切换:F4  第三种C:\Qt\Qt5.6.0\5.6\mingw49_ _32\bin(直接打开)
Qt的坐标系:以窗口左上角为0点,向右向下为正




新建一个Qt项目:main.cpp:
#include "mywidget.h"

#include <QApplication>//包含一个应用程序类的头文件
//argc:命令行变量的数量,argv:命令行变量的数组
int main(int argc, char *argv[])
{
//    a:应用程序对象,在Qt中有且只有一个
    QApplication a(argc, argv);
    //窗口对象,mywidget父类为->QWidget
    myWidget w;
    //窗口对象默认不会显示,必须调用show方法显示窗口
    w.show();
    return a.exec();
}

Qpushbutton:创建一个按钮,Qpushbutton的构造函数有四种重载

如果想要让button依附于当前的窗口widget中:(1)

myWidget::myWidget(QWidget *parent)
    : QWidget(parent)
{

    qDebug()<<"my widget 的构造"<<endl;
    QPushButton *but = new QPushButton;
//    but->show();//show默认顶层弹出控件
    //让but对象依附于mywidget窗口中
    but->setParent(this);//this是当前对象的指针
}

(2)

QPushButton * but2 = new QPushButton("button",this);

对按钮的各种操作:

//重置窗口大小:
    resize(400,200);
    //移动按钮
    but2->move(100,100);
    //设置窗口标题:
    setWindowTitle("project");
    //设置窗口固定大小:
    setFixedSize(600,400);
    //按钮重新指定大小:
    but2->resize(50,50);
 //显示文本
    but->setText("project1");

上述创建了一个Qpushbutton对象,有new就要有delete

但是在Qt中有对象树的概念使得清理十分方便:

 

Qt 引入对象树的概念,在一定程度上解决了内存问题。


l  当一个QObject对象在堆上创建的时候,Qt 会同时为其创建一个对象树。不过,对象树中对象的顺序是没有定义的。这意味着,销毁这些对象的顺序也是未定义的。


 

 

任何对象树中的 QObject对象 delete 的时候,如果这个对象有 parent,则自动将其从 parent 的children()列表中删除;如果有孩子,则自动 delete 每一个孩子。Qt 保证没有QObject会被 delete 两次,这是由析构顺序决定的。

 


 

posted @ 2020-05-20 20:08  ziggystardust  阅读(217)  评论(0)    收藏  举报