【QT】Qt窗口(上)

在这里插入图片描述

个人主页~


Qt窗口

  • 一、菜单栏
  • 二、工具栏
  • 三、状态栏
  • 四、浮动窗口

Qt窗口是通过QMainWindow类来实现的,我们之前的学习是通过QWidget类实现的

QMainWindow包含一个菜单栏Menu Bar②,多个工具栏Tool Bars③,多个浮动窗口Dock Widgets,一个状态栏Status Bar⑤和一个中心部件Central Widget④
①是Window Title

在这里插入图片描述

一、菜单栏

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//设置窗口名this->setWindowTitle("我的word文件");//创建菜单栏,将菜单栏设置到窗口当中QMenuBar* mb = new QMenuBar(this);this->setMenuBar(mb);//设置菜单名,将菜单设置到菜单栏中QMenu* m = new QMenu("文件");mb->addMenu(m);//设置菜单项,将菜单项设置到菜单当中QAction* a1 = new QAction("打开");QAction* a2 = new QAction("保存");QAction* a3 = new QAction("关闭");m->addAction(a1);m->addAction(a2);m->addAction(a3);//设置中心部件QTextEdit* te = new QTextEdit(this);this->setCentralWidget(te);te->setPlaceholderText("请输入");
}

menubar

让我们加上对应的功能

    connect(a1,&QAction::triggered,this,&MainWindow::load);connect(a2,&QAction::triggered,this,&MainWindow::save);connect(a3,&QAction::triggered,this,&MainWindow::quit);
void MainWindow::save()
{//创建文件对话框QFileDialog* dg = new QFileDialog(this);//根据文件名创建文本文件QString filename = dg->getSaveFileName(this,"保存文件","C:/Users/14725/Desktop");qDebug() << filename;//将filename转换成一个标准C字符串,然后使用这个路径来创建一个std::ofstream对象file,以便打开并写入文件std::ofstream file(filename.toStdString().c_str());if(!file.is_open()){qDebug() << "文件保存失败";return;}//将textedit中的内容通过普通文本存放在text中const QString& text = te->toPlainText();//通过流输入到file文件file << text.toStdString();//关闭文件file.close();
}void MainWindow::load()
{//创建文件对话框QFileDialog* d = new QFileDialog(this);//获取到指定位置的文件名QString filename = d->getOpenFileName(this,"加载文件","C:/Users/14725/Desktop");//将filename转换成一个标准C字符串,然后使用这个路径来创建一个std::ifstream对象file,以便加载文件std::ifstream file(filename.toStdString().c_str());if(!file.is_open()){qDebug() << "文件加载失败";return;}//创建两个字符串std::string content;std::string line;//一行一行从文件中扫描输入到contentwhile (std::getline(file, line)){content += line;content += "\n";}//关闭文件file.close();//获取到content内容,呈现到textedit当中QString text = QString::fromStdString(content);te->setPlainText(text);
}

menubar_2

二、工具栏

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//创建工具栏,将其添加到右侧区域QToolBar* tb = new QToolBar(this);addToolBar(Qt::RightToolBarArea,tb);//设置工具栏停留的位置只能为最左侧和最右侧tb->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);//设置是否可以作为一个独立的窗口被拖拽tb->setFloatable(false);//设置是否可以移动工具栏tb->setMovable(true);//设置工具栏内容QAction* openAction = new QAction("open",this);QAction* newAction = new QAction("new",this);tb->addAction(openAction);tb->addSeparator();tb->addAction(newAction);//在工具栏中添加控件QLabel* label = new QLabel("super little monster",this);tb->addWidget(label);
}

toolbar

三、状态栏

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//创建和设置状态栏,因为一个窗口创建默认有状态栏,//这里是直接把新创建的状态栏参数设置到已有的状态栏当中QStatusBar* sb = statusBar();setStatusBar(sb);//状态栏的显示内容和时间sb->showMessage("super_little_monster",2000);//设置一个label设置到右下角永久显示,左下角永久显示就是用addWidgetQLabel* label = new QLabel("我在右下角",this);sb->addPermanentWidget(label);
}

statusbar

四、浮动窗口

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//创建浮动窗口并将其设置在当前窗口中QDockWidget* dw = new QDockWidget("浮动窗口",this);addDockWidget(Qt::BottomDockWidgetArea,dw);//设置浮动窗口四个位置都可停靠,还有四个选项,分别是上下左右://Qt::TopDockWidgetArea//Qt::BottomDockWidgetArea//Qt::LeftDockWidgetArea//Qt::RightDockWidgetAreadw->setAllowedAreas(Qt::AllDockWidgetAreas);
}

dockwidget


今日分享到此结束~
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/458363.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenRTP 传输增加OpenRTPServer

开源地址 最近增加了OpenRTPServer&#xff0c; 已经修改完成一版放在了目录下&#xff0c;window和linux下编译都成功了&#xff0c;不过由于修改代码CMakefile 需要修改&#xff0c;先放放 OpenRTP开源地址 vlc得纠错传输方式 我发现我代码写错以后&#xff0c;vlc 依然能…

大数据Azkaban(二):Azkaban简单介绍

文章目录 Azkaban简单介绍 一、Azkaban特点 二、Azkaban组成结构 三、Azkaban部署模式 1、solo-server ode&#xff08;独立服务器模式&#xff09; 2、two server mode&#xff08;双服务器模式&#xff09; 3、distributed multiple-executor mode&#xff08;分布式多…

【Rust】环境搭建

▒ 目录 ▒ &#x1f6eb; 导读需求 1️⃣ 安装Chocolatey安装依赖 2️⃣ 安装RustRover安装toolchain&#xff08;rustup、VS&#xff09;重启配置生效设置安装插件 &#x1f4d6; 参考资料 &#x1f6eb; 导读 需求 重装系统&#xff0c;记录下环境搭建遇到的问题。 1️⃣ …

【最全基础知识2】机器视觉系统硬件组成之工业相机镜头篇--51camera

机器视觉系统中,工业镜头作为必备的器件之一,须和工业相机搭配。工业镜头是机器视觉系统中不可或缺的重要组成部分,其质量和性能直接影响到整个系统的成像质量和检测精度。 目录 一、基本功能和作用 二、分类 1、按成像方式分 2、按焦距分 3、按接口类型分 4、按应用…

如何制定有效的学习计划

文章目录 第一章&#xff1a;目标设定1.1 目标的重要性1.2 SMART原则1.3 目标设定公式 第二章&#xff1a;时间管理2.1 时间的重要性2.2 制定时间表2.3 时间管理公式2.4 番茄工作法2.5 时间分配公式 第三章&#xff1a;学习策略3.1 学习方法3.2 学习材料的选择3.3 学习效果公式…

量子计算突破:下一个科技革命的风口浪尖在哪里?

内容概要 在当今科技飞速发展的时代&#xff0c;量子计算如同一颗璀璨的明珠&#xff0c;正闪烁着无尽的可能性。它不仅是解决科学难题的钥匙&#xff0c;更是即将引领科技革命的先锋。如今&#xff0c;随着技术的不断突破&#xff0c;量子计算已经步入了一个崭新的阶段。想象…

【ZZULI】数据库第二次实验

【ZZULI】数据库第二次实验 创建学生信息管理系统的数据库通过T-SQL语句创建学生表、课程表、选课表创建学生表创建课程表创建选课表 修改表结构。为SC表添加写的列&#xff0c;列名为备注修改备注列的数据长度。删除SC表的备注列。 通过T-SQL语句对表的列添加约束&#xff0c;…

iOS静态库(.a)及资源文件的生成与使用详解(OC版本)

引言 iOS静态库&#xff08;.a&#xff09;及资源文件的生成与使用详解&#xff08;Swift版本&#xff09;_xcode 合并 .a文件-CSDN博客 在前面的博客中我们已经介绍了关于iOS静态库的生成步骤以及关于资源文件的处理&#xff0c;在本篇博客中我们将会以Objective-C为基础语言…

实验:使用Oxygen发布大型手册到Word格式

此前&#xff0c;我曾发表过一篇文章《结构化文档发布的故事和性能调优》&#xff0c;文中讨论了在将大型DITA手册转换为PDF格式时可能遇到的性能挑战及相应的优化策略。 近日&#xff0c;有朋友咨询&#xff0c;若将同样的大型手册输出为MS Word格式&#xff0c;是否也会面临…

从0到1,用Rust轻松制作电子书

我之前简单提到过用 Rust 做电子书&#xff0c;今天分享下如何用Rust做电子书。制作电子书其实用途广泛&#xff0c;不仅可以用于技术文档&#xff08;对技术人来说非常方便&#xff09;&#xff0c;也可以制作用户手册、笔记、教程等&#xff0c;还可以应用于文学创作。 如果…

Python应用指南:利用高德地图API实现路径规划

高德路径规划API是一套基于HTTP协议的接口服务&#xff0c;旨在为开发者提供便捷的路径规划解决方案。该API支持多种出行方式&#xff0c;包括步行、公交和驾车&#xff0c;能够满足不同场景下的路径查询需求。通过调用这些API&#xff0c;用户可以获得从起点到终点的最优路径建…

【Web.路由】——路由原理

这篇文章&#xff0c;我们来讲一讲什么是路由。 路由是 将用户请求地址映射为一个请求委托的过程&#xff0c;负责匹配传入的Http请求&#xff0c;然后将这些请求发送到应用的可执行终结点。 这里需要注意一个内容&#xff0c;发送到应用的可执行终结点。 路由的分类&#x…

大模型落地,要追求极致的务实主义

图源&#xff1a;AI生成 ▎****更快用上最新的大模型&#xff0c;是不是就赢定了&#xff1f; “能够像人类一样操作电脑。”这一堪称革命性的新技能来自10月23日Anthropic最新推出的升级版Claude 3.5 Sonnet模型&#xff0c;据介绍该模型不仅各项性能指标上取得显著提升&…

MobileNetV2实现实时口罩检测tensorflow

项目源码获取方式见文章末尾&#xff01; 回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 **《------往期经典推荐------》**项目名称 1.【Informer模型复现项目实战】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【…

机器学习 - 概述、数据集、Scikit-learn

目录 一、人工智能概述1、概念2、应用领域 二、机器学习1、概念2、数据集的构成3、算法分类a、监督学习b、无监督学习 4、开发流程5、可用数据集总结 三、Scikit-learn1、介绍2、安装3、数据集API介绍4、数据集返回值介绍5、数据集的划分6、数据集划分的API介绍7、案例a、获取鸢…

sass软件数据架构思路——未来之窗行业应用跨平台架构

一、SAAS多商户数据库 1.1 SaaS 多商户数据库的全部商户数据放在一个服务器上 1. 成本效益&#xff1a;集中管理和维护一个服务器通常比维护多个独立服务器更经济&#xff0c;降低硬件、运维和管理成本。 2. 数据集中管理&#xff1a;便于进行统一的数据备份、恢复和数据治理…

高清 MV 无字幕视频素材

在当下的短视频和自媒体时代&#xff0c;高清无字幕的视频素材无疑是创作者们的“得力助手”。不管是用于剪辑情感励志视频、制作搞笑段子&#xff0c;还是创作风景航拍视频&#xff0c;优质的素材库都能让你的创作如虎添翼。今天&#xff0c;我就为大家介绍几个海外的高质量素…

光学计算领域的突破:更快、更高效的光子存储单元

国际电气工程师团队首次开发出一种新的光子内存计算方法&#xff0c;这将在不久的将来使光学计算成为现实。 该团队包括来自匹兹堡大学斯旺森工程学院、加州大学圣巴巴拉分校、卡利亚里大学和东京工业大学&#xff08;现东京科学大学&#xff09;的研究人员。他们的研究成果发…

【论文阅读】Reliable, Adaptable, and Attributable Language Models with Retrieval

文章目录 OverviewCurrent Retrieval-Augmented LMsArchitectureTraining Limitations & Future Work Overview Parametic language models的缺点&#xff1a; 事实性错误的普遍存在验证的难度&#xff08;可溯源性差&#xff09;难以在有顾虑的情况下排除某些序列适应调整…

web pdf 图片拖动图片合成

web pdf 图片拖动图片合成 先看效果 前端 合成后 1.原理 以前写过相关的帖子&#xff0c;使用的是 canva 但是这次换了一个思路使用的是图片 1.先把pdf转成图片 2.把pdf图片和目标图片传到浏览器 3.原理就和图片合成一样了。见上一篇帖子 4.后端也一样只不过这次是将位置和pd…