[QT入门篇]三大窗口类介绍

  一、QT文件分析

1.项目文件(.pro)

在创建的 Qt 项目中会自动生成了一个 .pro 的项目文件,该文件中记录着项目的一些属性信息。一般用于添加其他模块,或者添加外部库(OpenCV)文件路径。

2.mian.cpp文件

程序的入口函数mian()函数在这里实现,控制着程序的运行和窗口界面的显示。

#include "mainwindow.h"  //生成的窗口类头文件

#include <QApplication>  //应用程序类的头文件

int main(int argc, char *argv[])
{
    //创建应用程序对象,并且实例化对象只能有一个
    //该类的作用:检测触发事件,进行事件循环并处理
    QApplication a(argc, argv);

    //创建窗口类对象
    MainWindow w;
    //显示窗口
    w.show();
    //应用程序对象开始事件循环,保证应用程序不退出
    return a.exec();
}

3.mainwindow.ui设计文件

在 Qt 中每一个窗口都对应一个可编辑的可视化界面, 这个界面对应的是一个 xml 格式的文件,一般情况下不需要在 xml 格式下对这个文件进行编辑,关于这个文件结构了解即可。可通过Qt Creator进行设计。

4.mainwindow.h头文件

该文件是窗口界面对应的头文件。主要是实现MainWindow类的定义

//Qt标准窗口类头文件
#include <QMainWindow>

QT_BEGIN_NAMESPACE
//mainwindow.ui文件中也有一个类叫 MainWindow, 将这个类放到命名空间 Ui 中
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    //宏定义:使用Qt中信号槽机制
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    //定义指针指向窗口的UI对象
    Ui::MainWindow *ui;
};

5.mainwindow.cpp源文件

实现类MainWindow类成员函数的实现以及将Ui界面设计类的mainwindow和窗口的mainwindow进行相关联。


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow) //创建ui::MainWindow的一个实例化对象
{
    //将mainwindow.ui的实例化对象和当前类的对象进行关联
    //使得同名的两个类合二为一
    ui->setupUi(this);
}

二、基础窗口类

Qt常用的窗口类有3个QMainWindow,QDialog,QWidget,在创建窗口类的时,需要让自己的窗口类继续这个三个窗口类的其中一个。

1.QWidget

①所有窗口类的基类
②Qt 中的控件 (按钮,输入框,单选框…) 也属于窗口,基类都是 QWidget
③可以内嵌到其他窗口中:没有边框(窗口实例化时需指定父窗口)
④可以不内嵌单独显示:独立的窗口,有边框(窗口实例化时不需指定父窗口)

所以对应内嵌窗口和不内嵌窗口的显示方式是不同的。

不内嵌窗口:需要调用函数才可以显示,QWidget是所有窗口类的基类, 调用这个提供的 show() 方法就可以显示将任何窗口显示出来

    //QWidget类实例化(不内嵌窗口)
    //explicit testwidget(QWidget *parent = nullptr);
    //不指定wid对象的父对象,不内嵌窗口
    testwidget* wid = new testwidget;
    // 显示窗口:独立于主窗口的窗口
    wid->show();

 内嵌窗口:依附于某一个大的窗口,作为大窗口的一部分,大窗口是内嵌窗口的父窗口,当父窗口显示的时, 内嵌窗口也被显示出来。

//创建窗口类时指定父对象,内嵌窗口,
//当父窗口显示时,子窗口也显示出来,子窗口无边框
testwidget* wid = new testwidget(this);

 

2.QDialog

对话框类,不能内嵌到其他窗口中。

非模态显示:

    //创建对话框窗口
    testDialog* dig = new testDialog(this);
    //非模特显示
    dig->show();

模态显示:

    //创建对话框窗口
    testDialog* dig = new testDialog(this);
    //模特显示,调用exec显示
    //阻塞程序的执行
    dig->exec();

模态显示只有关闭该对话框后程序才能执行下一步的操作。

void QWidget::show();    // 显示当前窗口和它的子窗口

QWidget是所有窗口类的基类, 调用show() 方法就可以显示将任何窗口显示出来(非模态显示 )

[virtual slot] int QDialog::exec();

 对话框窗口的模态显示

3.QMainWindow

①有工具栏,状态栏,菜单栏,后边的章节会具体介绍这个窗口
②不能内嵌到其他窗口中

 

小结:

 

  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Super.Bear

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值