QT入门


  一、创建一个简单的Qt程序

  启动QtCreate:New Project  -> Application  -> Qt Widgets Application  -> Choose  -> 文件名不能使用中文!

  基类选择:QWidget

     

     快捷键 和 命名规范

//快捷键
注释  ctrl + /
运行  ctrl + r
编译  ctrl + b
字体缩放 ctrl + 鼠标滚轮
查找  ctrl + f
整行移动 ctrl + shift + ↑或者↓
帮助文档 F1 或 左侧按钮
自动对齐 ctrl + i
同名之间的.h 和 .cpp切换 F4

//命名规范
类名 首字母大写,单词和单词之间首字母大写
函数名 变量名 首字母大写,单词和单词之间首字母大写

  widget

widget,窗体部件,该词起源于window gadget 窗口配件,这两个词,相当于Windows系统中的控件(control)和容器(container)
按钮、菜单、滚动条和框架都是窗口部件,窗口部件也可以包含其他窗口部件

  工程文件 .pro( 自动生成的 )

#-------------------------------------------------
#
# Project created by QtCreator 2022-04-11T14:26:56
#
#-------------------------------------------------

QT       += core gui   //QT 包含的模块: core  gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = HelloQt     //目标生成的.exe程序的名称
TEMPLATE = app        //模板  应用程序模板 Application

SOURCES += \           //源文件
        main.cpp \
        widget.cpp

HEADERS += \            //头文件
        widget.h

  头文件.h

#ifndef WIDGET_H
#define WIDGET_H

#include   //包含头文件QWiget窗口类

class Widget : public QWidget //继承QWidget
{
    Q_OBJECT  //Q_OBJECT宏,允许类中使用信号和槽的机制

public:
    Widget(QWidget *parent = 0); //构造函数
    ~Widget();
};

#endif // WIDGET_H

   .cpp 文件

#include "widget.h"
#include  //包含头文件QLabel

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{   //创建一个QLabel
    QLabel *label = new QLabel("Hello Qt!"); 
    //让label对象 依赖widget窗口中
    label->setParent(this);
}

Widget::~Widget()
{

}

  main文件(入口 )

#include "widget.h"
#include  //包含一个应用程序类的头文件

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

  二、建立连接

  Qt的窗口部件可以发射信号(signal),信号可以与函数 ( 在 这里称为槽,slot) 相连接,以便在发射信号时,槽可以得到自动执行

#include "widget.h"
#include 
#include 

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    QLabel *label = new QLabel("Hello Qt!");
    label->setParent(this);
QPushButton
*button = new QPushButton("退出!"); button->setParent(this);
button
->move(0,50); QObject::connect( button, &QPushButton::clicked , this, &Widget::close ); } Widget::~Widget() { }

  三、窗口部件的布局

  用布局(layout)来管理窗口部件的几何形状

QT