Qt---项目的创建及运行

一、创建第一个Qt程序

1. 点击创建项目后,选择项目路径以及给项目起名称

        名称:不能有中文、不能有空格
        路径:不能有中文路径
2. 默认创建有窗口类myWidget,基类有三种选择:QWidget、QMainWindow、QDialog
3. main函数
        QApplication a()        应用程序对象,有且仅有一个

        myWidget w;          实例化窗口对象
        w.show();               调用show函数显示窗口
        return a.exec();      让应用程序对象进入消息循环机制中,代码阻塞到当前行

#include "mywidget.h"

#include <QApplication>//包含一个应用程序类的头文件

//main程序入口  argc命令行变量数量 argv命令行变量的数组
int main(int argc, char *argv[])
{
    //a应用程序对象,在QT中,应用程序对象有且仅有一个
    QApplication a(argc, argv);
    //窗口对象  myWidget父类  ->  QWidget
    myWidget w;
    //窗口对象  默认不会显示,必须调用show方法显示窗口
    w.show();
    //让应用程序对象进入消息循环,阻塞在这行
    return a.exec();

//    while(true)
//    {
//        if(点击叉子)
//        {
//            break;
//        }
//    }

}

二、命名规范及快捷键

命名规范:
        类名    首字母大写,单词和单词之间首字母大写
        函数名   变量名称    首字母小写,单词和单词之间首字母大写
快捷键:       
        注释 ctrl + /
        运行 ctrl + r
        编译 ctrl + b
        字体缩放 ctrl + 鼠标滚轮
        查找 ctrl + f
        整行移动 ctrl + shift ↑或者↓
        自动对齐 ctrl + i
        同名之间的.h和.cpp切换 F4
        帮助文档 第一种方式F1  第二种:左侧按钮 第三种:绝对路径

三、QPushButton创建

按钮控件常用API:
        创建QPushbutton *btn= new QPushbutton
        设置父亲        setParent(this)
        设置文本        setText("文字")
        设置位置            move(宽,高)
        重新指定窗口大小        resize

        设置窗口标题        setWindowTitle
        设置窗口固定大小        setFixedSize

myWidget::myWidget(QWidget *parent):QMainWindow(parent)
{
    //创建一个按钮
    QPushButton *btn = new QPushButton;
    //btn->show();//show以顶层方式弹出窗口控件
    //让btn对象 依赖在myWidget窗口中
    btn->setParent(this);

    //显示文本
    btn->setText("第一个按钮");

    //按钮重新指定大小
    btn->resize(100,30);

    //创建第二个按钮   按照控件的大小创建窗口
    QPushButton *btn2 = new QPushButton("第二个按钮",this);

    //移动btn2按钮
    btn2->move(100,100);

    //重置窗口大小
    resize(600,400);

    //设置固定窗口大小
    setFixedSize(600,400);

    //设置窗口标题
    setWindowTitle("第一个窗口");

}

四、对象模型(对象树) 

        当创建的对象在堆区时,如果指定的父亲是QObject派生下来的类或者QObject子类派生下来的类,可以不用管理释放的操作,会将对象放入到对象树中。

        一定程度上简化了内存回收机制。

mypushbutton.h 

#ifndef MYPUSHBUTTON_H
#define MYPUSHBUTTON_H

#include <QPushButton>

class MyPushButton : public QPushButton
{
    Q_OBJECT
public:
    explicit MyPushButton(QWidget *parent = nullptr);

    ~MyPushButton();

signals:

};

#endif // MYPUSHBUTTON_H

mypushbutton.cpp

#include "mypushbutton.h"
#include<QDebug>

MyPushButton::MyPushButton(QWidget *parent) : QPushButton(parent)
{
    qDebug()<<"我的按钮类构造调用";
}
MyPushButton::~MyPushButton()
{
    qDebug()<<"我的按钮类析构";
}

mywidget.cpp

#include "mywidget.h"
#include"QPushButton"   //按钮控制的头文件
#include"mypushbutton.h"
#include<QDebug>


myWidget::myWidget(QWidget *parent):QMainWindow(parent)
{
    //创建一个按钮
    QPushButton *btn = new QPushButton;
    //btn->show();//show以顶层方式弹出窗口控件
    //让btn对象 依赖在myWidget窗口中
    btn->setParent(this);

    //显示文本
    btn->setText("第一个按钮");

    //按钮重新指定大小
    btn->resize(100,30);

    //创建第二个按钮   按照控件的大小创建窗口
    QPushButton *btn2 = new QPushButton("第二个按钮",this);

    //移动btn2按钮
    btn2->move(100,100);

    //重置窗口大小
    resize(600,400);

    //设置固定窗口大小
    setFixedSize(600,400);

    //设置窗口标题
    setWindowTitle("第一个窗口");


    //创建一个自己的按钮对象
    MyPushButton *myBtn = new MyPushButton;
    myBtn->setText("我自己的按钮");

    myBtn->move(200,0);
    myBtn->setParent(this);//设置到对象树中
    myBtn.resize(100,30);
}

myWidget::~myWidget()
{
    qDebug()<<"myWidget的析构调用";
}

输出:

底层逻辑:先析构我的按钮类再析构myWidget,只是打印顺序置为反

我的按钮类构造调用

myWidget的析构调用

我的按钮类析构

五、Qt中的坐标系

左上角为(0,0)点

x以右为正方向

y以下为正方向

相关推荐

  1. 关于Qt Creator 项目创建

    2024-05-14 13:20:06       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-14 13:20:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-14 13:20:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-14 13:20:06       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-14 13:20:06       20 阅读

热门阅读

  1. Android自由控制阴影位置

    2024-05-14 13:20:06       9 阅读
  2. Vue setup函数

    2024-05-14 13:20:06       9 阅读
  3. Kotlin标准函数和静态方法

    2024-05-14 13:20:06       12 阅读
  4. iOS 键盘相关

    2024-05-14 13:20:06       11 阅读
  5. 实用的Chrome命令

    2024-05-14 13:20:06       9 阅读
  6. iOS 更改button文字和图片的位置

    2024-05-14 13:20:06       10 阅读
  7. Linux下安装netcore

    2024-05-14 13:20:06       14 阅读
  8. Linux sigfillset

    2024-05-14 13:20:06       10 阅读