qt继承结构

embedded/2024/10/22 2:34:15/

一、 继承结构

所有的窗口类均继承自QWidget类,因此QWidget类本身包含窗口的特性。QWidget对象本身既可以作为独立窗口,又可以作为组件(子窗口)。

通过构造函数可以创建以上两种形态的QWidget:

// 参数1:使用默认值0时,创建的对象为独立窗口。

// 参数2:窗口标记属性(后面讲)

QWidget::​QWidget(QWidget * parent = 0,

Qt::WindowFlags f = 0)

当创建项目时,基类选择QWidget,此时自带的窗口w对象就是继承自QWidget的独立窗口效果。

QWidget作为独立窗口的基类,内部常用的相关功能如下:

  • windowFlags : Qt::WindowFlags

窗口标记,可以设置一些枚举值,给窗口不同的显示效果,如果要同时设置多个标记,可以使用 | 分隔。

下面是一些常见标记:

二、QMessageBox 消息对话框

QMessageBox直接继承QDialog,是一个用于通信用户或询问用户一个问题并接受答案的模态对话框。

预设了四种类型的弹窗:

这些QDialog的派生类往往适用于一个具体的开发场景,弹窗无需创建对象,直接使用静态成员函数。

// 参数1:父窗口

// 参数2:窗口标题

// 参数3:展示信息

// 返回值:枚举,表示用户点击的按键类型

QMessageBox::StandardButton QMessageBox::​critical|imformation|question|warning(

QWidget * parent,

const QString & title,

const QString & text) [static]

三、QStackedWidget 堆栈窗口

QStackedWidget包含多个QWidget子窗口,同时只能显示一个,子窗口之间可以翻页切换显示。

通常配合QListWidget使用。

QListWidget提供信号函数:

// QListWidget当前选项发生变化时发射

// 参数为当前选项的索引

void currentRowChanged(int currentRow) [signal]

QStackedWidget提供槽函数:

// 设置显示页的索引

void setCurrentIndex(int index) [slot]

四、QMainWindow 主窗口类

1.主窗口类型

QMainWindow是最合适作为主窗口的类型,因为包含若干组成部分:

 

2.QToolBar 工具栏

工具栏上的工具按钮通常都是菜单栏里的QAction对象(设置图标),因此:

  • 通过C++代码设置工具栏按钮 

/ 向工具栏中添加工具按钮

// 参数为设置了图标的QAction对象

void QToolBar::addAction(QAction * action)

3.QWidget 中心组件

就是一个作为子窗口的QWidget对象。

4.QStatusBar 状态栏

状态栏可以自定义,通过文档中对应add函数增加各种自定义组件,课下感兴趣可自行拓展。预设的状态栏可以显示文本信息,相关函数如下:

// 在状态栏显示信息

// 参数1:信息内容

// 参数2:显示的毫秒数,0表示长显示

void QStatusBar::showMessage(const QString & message, int timeout = 0) [slot]

// 清除状态栏显示信息

void QStatusBar::clearMessage() [slot]

 


http://www.ppmy.cn/embedded/129439.html

相关文章

基于SpringBoot+Vue+uniapp的海产品加工销售一体化管理系统的详细设计和实现(源码+lw+部署文档+讲解等)

详细视频演示 请联系我获取更详细的视频演示 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…

Git客户端使用之命令行

一、git客户端命令行的使用 1、创建本地用户并绑定ssh-key到gitlab #在本地注册用户,这个用户随便创建它就是与git仓库连接的一个用户,不过最好喝git仓库用户一样有利于区分。 git config --global user.name "wenqiang1" git config --global user.ema…

Android中的内存泄漏及其检测方式

Android中的内存泄漏及其检测方式 一、Android内存泄漏概述 在Android开发中,内存泄漏是一个常见且严重的问题。内存泄漏指的是在应用程序中,由于某些原因,已经不再使用的对象仍然被引用,导致垃圾回收器(Garbage Col…

Golang | Leetcode Golang题解之第480题滑动窗口中位数

题目: 题解: type hp struct {sort.IntSlicesize int } func (h *hp) Push(v interface{}) { h.IntSlice append(h.IntSlice, v.(int)) } func (h *hp) Pop() interface{} { a : h.IntSlice; v : a[len(a)-1]; h.IntSlice a[:len(a)-1]; return v }…

python 爬虫 入门 四、线程,进程,协程

线程和进程大部分人估计都知道,但协程就不一定了。 一、进程 进程是操作系统分配资源和调度的基本单位,一个程序开始运行时,操作系统会给他分配一块独立的内存空间并分配一个PCB作为唯一标识。初始化内存空间后进程进入就绪态,PC…

MySQL 设计数据表

一个数据表主要包含信息有 : 表名、主键、字段、数据类型、索引,本节主要介绍表的命名规范、字段命名、字段的数据类型选择。 新建的表都是新建在 “item_name” 数据库中的,新建 “item_name” 数据库命令如下 : CREATE DATABASE item_name;新建数据库…

信号与噪声分析——第一节-确定信号的分析

目录 1.确定信号的分析 1.1确定信号的分类: 1.周期信号与非周期信号: 周期信号的定义: 性质: 2.能量信号与功率信号: 定义 区别: 3.基带信号与频带信号: 基带信号的定义: …

shell错误修改

错误处理 检查ffmpeg和ffprobe命令是否已安装 if ! command -v ffmpeg &> /dev/null || ! command -v ffprobe &> /dev/null thenecho "ffmpeg或ffprobe未安装,请先安装它们。"exit ficommand -v xxxx command 是一个内置命令,…