【qt】多窗口开发

2024-06-01 15:28
文章标签 qt 开发 多窗口

本文主要是介绍【qt】多窗口开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

多窗口开发

  • 一.应用场景
  • 二.嵌入的窗口
    • 1.设计Widget窗口
    • 2.创建窗口
    • 3.添加窗口
    • 4.总代码
  • 三.独立的窗口
    • 1.创建窗口
    • 2.显示窗口
  • 四.总结

一.应用场景

多窗口,顾名思义,有多个窗口可以供我们进行操作!
截个小图,你应该就知道了
在这里插入图片描述
OK,话不多说,直接开干,先来设计我们的主窗口
在这里插入图片描述
需要蔬菜的可以dd我…
运行结果:
在这里插入图片描述
运行结果有点拉,我们来把tabWidget设置为中心组件.

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);ui->tabWidget->clear();//清空页setCentralWidget(ui->tabWidget);setWindowState(Qt::WindowMaximized);//一运行就是最大化ui->tabWidget->setTabsClosable(true);//对tab添加一个关闭按钮}MainWindow::~MainWindow()
{delete ui;
}

运行结果:
在这里插入图片描述

但是刚刚我们添加的关闭按钮不能真正的进行关闭,当点击X的时候,会发出一个信号
可以去tabWidget里面去找!
在这里插入图片描述
现在我们可以去添加一个槽函数,来实现真正的关闭功能

private slots://按照转到槽的格式 on_发送者_信号 的格式来写会自动的关联,不用我们手动的关联void on_tabWidget_tabCloseRequested(int index);

槽函数的实现:

void MainWindow::on_tabWidget_tabCloseRequested(int index)
{QWidget* widget=ui->tabWidget->widget(index);//拿到widgetwidget->close();//进行关闭
}

当我们后面进行添加了窗口,再来测试这个关闭功能.

二.嵌入的窗口

1.设计Widget窗口

在这里插入图片描述
然后添加好action
在这里插入图片描述
因为这是widget不是mainwindow所有不能添加工具栏,但是我们可以通过代理来进行添加,代码是万能的!

#include "formwidget.h"
#include "ui_formwidget.h"
#include <QToolBar>//工具栏
#include <QVBoxLayout>//水平布局FormWidget::FormWidget(QWidget *parent) :QWidget(parent),ui(new Ui::FormWidget)
{ui->setupUi(this);QToolBar *Bar=new QToolBar(this);Bar->addAction(ui->actionOpen);Bar->addSeparator();//添加分割线Bar->addAction(ui->actionFont);Bar->addAction(ui->actionCut);Bar->addAction(ui->actionCopy);Bar->addAction(ui->actionPaste);Bar->addAction(ui->actionRepeal);Bar->addAction(ui->actionRewire);Bar->addSeparator();Bar->addAction(ui->actionEXIT);Bar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//字体显示在下//设置布局QVBoxLayout *vLayout=new QVBoxLayout(this);vLayout->addWidget(Bar);vLayout->addWidget(ui->plainTextEdit);this->setLayout(vLayout);//为窗口添加布局}FormWidget::~FormWidget()
{delete ui;
}

2.创建窗口

注意添加头文件

    FormWidget *form=new FormWidget(this);form->setAttribute(Qt::WA_DeleteOnClose);//关闭的时候同时销毁

3.添加窗口

//为tabWidget添加页面int ret=ui->tabWidget->addTab(form,QString::asprintf("窗口%d",ui->tabWidget->count()+1));ui->tabWidget->setCurrentIndex(ret);//设置为添加的页面窗口

4.总代码

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "formwidget.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);ui->tabWidget->clear();setCentralWidget(ui->tabWidget);setWindowState(Qt::WindowMaximized);//一运行就是最大化ui->tabWidget->setTabsClosable(true);//对tab添加一个关闭按钮}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_tabWidget_tabCloseRequested(int index)
{QWidget* widget=ui->tabWidget->widget(index);//拿到widgetwidget->close();//进行关闭
}void MainWindow::on_action_Widget_triggered()
{FormWidget *form=new FormWidget(this);form->setAttribute(Qt::WA_DeleteOnClose);//关闭的时候同时销毁//为tabWidget添加页面int ret=ui->tabWidget->addTab(form,QString::asprintf("窗口%d",ui->tabWidget->count()+1));ui->tabWidget->setCurrentIndex(ret);//设置为添加的页面窗口
}

运行结果;
在这里插入图片描述
里面具体的功能不做实现,我们主要是演示多窗口的用法!

三.独立的窗口

1.创建窗口

FormWidget *form=new FormWidget(this);form->setAttribute(Qt::WA_DeleteOnClose);//关闭的时候同时销毁

2.显示窗口

void MainWindow::on_action_WidgetIndent_triggered()
{FormWidget *form=new FormWidget(this);form->setAttribute(Qt::WA_DeleteOnClose);//关闭的时候同时销毁form->show();//以非模态的方式显示
}

运行结果:
在这里插入图片描述
这样会出现问题,所以我们要对widget窗口设置标记,使其有对话框的摸样.

void MainWindow::on_action_WidgetIndent_triggered()
{FormWidget *form=new FormWidget(this);form->setAttribute(Qt::WA_DeleteOnClose);//关闭的时候同时销毁form->setWindowFlag(Qt::Window,true);form->setWindowTitle("基于widget的独立窗口");form->show();//以非模态的方式显示
}

运行结果:
在这里插入图片描述

四.总结

多窗口其实是比较简单的,主要是设计好,显示的方式确定好,就可以了!
小彩蛋:
在这里插入图片描述
有没有点熊猫烧香的感觉,这就是多窗口在这里插入图片描述

没什么好的句子,哈哈

这篇关于【qt】多窗口开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1021385

相关文章

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

基于Qt Qml实现时间轴组件

《基于QtQml实现时间轴组件》时间轴组件是现代用户界面中常见的元素,用于按时间顺序展示事件,本文主要为大家详细介绍了如何使用Qml实现一个简单的时间轴组件,需要的可以参考下... 目录写在前面效果图组件概述实现细节1. 组件结构2. 属性定义3. 数据模型4. 事件项的添加和排序5. 事件项的渲染如何使用

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

python与QT联合的详细步骤记录

《python与QT联合的详细步骤记录》:本文主要介绍python与QT联合的详细步骤,文章还展示了如何在Python中调用QT的.ui文件来实现GUI界面,并介绍了多窗口的应用,文中通过代码介绍... 目录一、文章简介二、安装pyqt5三、GUI页面设计四、python的使用python文件创建pytho

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节

Qt实现文件的压缩和解压缩操作

《Qt实现文件的压缩和解压缩操作》这篇文章主要为大家详细介绍了如何使用Qt库中的QZipReader和QZipWriter实现文件的压缩和解压缩功能,文中的示例代码简洁易懂,需要的可以参考一下... 目录一、实现方式二、具体步骤1、在.pro文件中添加模块gui-private2、通过QObject方式创建