Qt中的窗口类及其特点

news/2024/11/29 13:51:57/

目录

常用的窗口类

窗口的显示内嵌窗口

QWidget内嵌窗口演示

 QWidget不内嵌窗口演示

 QDialog类型的窗口特点

 QMainWindows窗口的特点

 总结

常用的窗口类

  • 常用的窗口类有 3 个
    • 在创建 Qt 窗口的时候,需要让自己的窗口类继承上述三个窗口类的其中一个
  • QWidget
    • 所有窗口类的基类
    • Qt 中的控件 (按钮,输入框,单选框…) 也属于窗口,基类都是 QWidget
    • 可以内嵌到其他窗口中:没有边框
    • 可以不内嵌单独显示:独立的窗口,有边框
  • QDialog
    • 对话框类,后边的章节会具体介绍这个窗口
    • 不能内嵌到其他窗口中
  • QMainWindow
    • 有工具栏,状态栏,菜单栏
    • 不能内嵌到其他窗口中

窗口的显示内嵌窗口

在常见的窗口类中,出现了“内嵌”这个词,那么什么是内嵌,什么是不内嵌呢?

  • 内嵌窗口

    • 依附于某一个大的窗口,作为了大窗口的一部分
    • 大窗口就是这个内嵌窗口的父窗口
    • 父窗口显示的时候, 内嵌的窗口也就被显示出来了
  • 不内嵌窗口

    • 这类窗口有边框,有标题栏

    • 需要调用函数才可以显示

QWidget内嵌窗口演示

我们先添加一个新文件

 选择Qt模板-Qt设计器界面类

 界面模板Widget

 创建类名:

点击完成: 

 

 此时我们发现项目中出现了关于TestWidget的他偶文件,源文件和界面文件

在testwidget.ui界面文件中拖拽几个Button按钮,方便演示

 在mainwindow.cpp源文件中创建窗口对象,并给其指定父对象(explicit TestWidget(QWidget *parent = nullptr);在testwidget.h中包含,C++多态)

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "testwidget.h"
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//一般在qt的构造函数中进行初始化操作(窗口,数据。。。)//explicit TestWidget(QWidget *parent = nullptr);//如果创建一个窗口对象的时候给其指定了父对象,这个窗口就不是一个独立窗口//这样的话当前父窗口显示的时候,子窗口就一并被显示出来了,这个时候子窗口是没有边框的TestWidget* w =new TestWidget(this);
}MainWindow::~MainWindow()
{delete ui;
}

 此时运行程序,发现testwidget.ui界面在MainWindow大窗口中显示

 QWidget不内嵌窗口演示

将mainwindow.cpp中代码改为以下代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "testwidget.h"
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//一般在qt的构造函数中进行初始化操作(窗口,数据。。。)//显示当前窗口的时候,显示另外一个窗口 Testwidget//创建窗口对象,没有给w对象指定父对象,这个窗口是一个独立窗口//要显示这个独立窗口必须要进行show()操作TestWidget* w =new TestWidget;//显示当前窗口w->show();}MainWindow::~MainWindow()
{delete ui;
}

 

 运行结果:

 QDialog类型的窗口特点

创建Dialog类型的窗口时,大致步骤与Widget窗口类似,在选择界面模板的时候进行更改即可,我们这里选择的是Dialoh without Buttons模板

 在testdialog.ui界面中布置一些按钮用来演示

 在mainwindow.cpp中加入Dialog.ui界面(非模态)

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "testwidget.h"
#include "testdialog.h"
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//一般在qt的构造函数中进行初始化操作(窗口,数据。。。)//显示当前窗口的时候,显示另外一个窗口 Testwidget//创建窗口对象,没有给w对象指定父对象,这个窗口是一个独立窗口//要显示这个独立窗口必须要进行show()操作TestWidget* w =new TestWidget;//显示当前窗口w->show();//创建对话框窗口TestDialog* dlg = new TestDialog(this);//非模态dlg->show();
}
MainWindow::~MainWindow()
{delete ui;
}

 运行结果:

  在mainwindow.cpp中加入Dialog.ui界面(模态)

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "testwidget.h"
#include "testdialog.h"
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//一般在qt的构造函数中进行初始化操作(窗口,数据。。。)//显示当前窗口的时候,显示另外一个窗口 Testwidget//创建窗口对象,没有给w对象指定父对象,这个窗口是一个独立窗口//要显示这个独立窗口必须要进行show()操作TestWidget* w =new TestWidget;//显示当前窗口w->show();//创建对话框窗口TestDialog* dlg = new TestDialog(this);//模态,exec()//阻塞程序的执行dlg->exec();
}
MainWindow::~MainWindow()
{delete ui;
}

 运行结果:

 这种模态的方式创建窗口,会阻塞程序的执行,我们现在只能够显示两个子窗口,并且不能够切换其他窗口,在关闭掉Dialog窗口后,主窗口会显示出来,并且可以切换窗口

 QMainWindows窗口的特点

在mainwindows.ui界面的右侧有一个编辑框

它里面显示了其他两周窗口没有的状态栏,菜单栏,工具栏(工具栏可以有多个,状态栏和菜单栏只能有一个) 

在我们添加了状态栏(s),菜单栏(m),工具栏(t)之后,ui界面会进行对应的显示

 总结:

        本文介绍了Qt的三个窗口类,并简要说明了它们的区别,QWidget窗口有内嵌窗口和不内嵌窗口之分,而QDialog窗口只有不内嵌窗口,但又有模态和非模态之分,QMainWindow窗口也只有不内嵌窗口,但是他可以有菜单栏,工具栏和状态栏。

 


http://www.ppmy.cn/news/162915.html

相关文章

摄像机标定

一、概述 1、摄像机标定内容 摄像机标定实际上是要求出6个外参数、5个内参数,即旋转和平移矩阵 R 和 T 中的三个坐标系旋转角度和坐标系平移量 (fu f/Sx, fv f/Sy, u0, v0, u),以及各种畸变系数 k1、k2、p1、p2、s1、s2 等。若不考虑离散后像素变形&a…

ccd摄像机基础知识

ccd摄像机基础知识 前言 什么是ccd? 在闭路监控系统中,摄像机又称摄像头或ccd(charge coupled device)即电荷耦合元器件。严格来说,摄像机是摄像头和镜头的总称,而实际上,摄像头与镜头大部分是…

OpenGL--摄像机漫游

理论基础 在3D游戏中,我们通常可以通过鼠标或键盘操纵角色英雄在场景中移动,从不同的角度观察物体,这其实就是本章要介绍的摄像机漫游。 关于摄像机漫游其实就是围绕一个函数实现的(通过改变视点以及观察方向来实现),具体的函数…

摄像机标定学习笔记

摄像机标定学习笔记,后面部分参考链接:http://www.sigvc.org/why/book/3dp/chap6.3.1.htm,如有侵权,立删。同时强烈推荐阅读该链接文章http://www.cnblogs.com/gemstone/articles/2293806.html 利用单目视觉测量模型解算出目标距离…

Unity摄像机详解

摄像机包含五个组件: Transform 变换组件Camera 摄像机:向玩家捕获并展示世界Audio Listener 音频监听器:接受场景输入的音频源并通过计算机的扬声器播放声音。Flare Layer:激活可显示光源耀斑GUI Layer:激活可渲染二…

网络摄像机-ISP基础一

 什么是ISP,他的工作原理是怎样的? ISP是Image Signal Processor的缩写,全称是影像处理器。在相机成像的整个环节中,它负责接收感光元件(Sensor)的原始信号数据,可以理…

URP——摄像机

Unity中的相机就像现实世界中的相机一样工作:它捕捉三维空间中的物体,然后将其展平,显示在二维平面上。 通用渲染管线(URP)中的摄像头基于Unity的标准摄像头功能,但有一些显著的区别。URP相机与标准Unity相机最显著的区别是: 通用附加相机数…

UE4摄像机系统解析

一.摄像机工作原理 在游戏中,摄像机是玩家的眼睛,他控制了玩家的视点(POV即PointOfView,后面简称POV)位置以及玩家的视野大小(FOV即FieldOfView,后面简称FOV)。一句话&a…