【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.mzph.cn/diannao/58076.shtml

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

相关文章

关闭windows更新方法

在windows更新里选择暂停windows更新 然后按下winr&#xff0c;输入regedit 在注册表里找到 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings\PauseUpdatesExpiryTime 修改时间即可

【数据分享】中国汽车市场年鉴(2013-2023)

数据介绍 在这十年里&#xff0c;中国自主品牌汽车迅速崛起。吉利、长城、比亚迪等品牌不断推出具有竞争力的车型&#xff0c;在国内市场乃至全球市场都占据了一席之地。同时&#xff0c;新能源汽车的发展更是如日中天。随着环保意识的提高和政策的大力支持&#xff0c;电动汽车…

第十八届联合国世界旅游组织/亚太旅游协会旅游趋势与展望大会在广西桂林开幕

10月19日&#xff0c;第十八届联合国世界旅游组织/亚太旅游协会旅游趋势与展望大会(以下简称“大会”)在广西桂林开幕&#xff0c;来自美国、英国、德国、俄罗斯、柬埔寨等25个国家约120名政府官员、专家学者和旅游业界精英齐聚一堂&#xff0c;围绕“亚洲及太平洋地区旅游业&a…

Git 创建SSH秘钥

1、命令行输入 ssh-keygen -t rsa -b 4096 2、系统提示你“Enter a file in which to save the key”&#xff0c;直接按回车键 3、再提示你输入密码的时候直接按回车键&#xff0c;创建没有密码的SSH密钥 4、密钥对创建后&#xff0c;可以在自己电脑对应的 ~/.ssh 目录下找到…

【隐私计算篇】全同态加密应用场景案例(隐私云计算中的大模型推理、生物识别等)

1.题外话 最近因为奖项答辩&#xff0c;一直在忙材料准备&#xff0c;过程非常耗费时间和精力&#xff0c;很难有时间来分享。不过这段时间虽然很忙碌&#xff0c;但这期间有很多新的收获&#xff0c;特别是通过与领域内专家的深入交流和评审过程&#xff0c;对密码学和隐私计算…

今日头条APP移动手机端留痕脚本

这两个的脚本目的是什么呢&#xff1f; 很简单&#xff0c;就是批量访问指定用户的首页&#xff0c;在他人访客记录里面留下你的账户信息&#xff0c;可以让对方访问你的头条&#xff0c;概率下会关注你的头条&#xff0c;目的嘛&#xff0c;这个自己细想&#xff01; 第1个是…

Python实现Android设备录屏功能及停止录屏功能

1、功能概述&#xff1f; 提供源码下载 之前通过ADB命令实现了实时的录屏功能。但是很遗憾&#xff0c;虽然通过adb命令录屏非常方便&#xff0c;但由于权限限制&#xff0c;无法在安卓系统较高的设备上使用。现选择使用另一开源工具来解决这一问题&#xff0c;并记录使用详细…

java jsoup爬虫如何快速获取到html页面的选择器元素

java jsoup爬虫如何快速获取到html页面的选择器元素 一、打开元素选择器二、选定元素三、定位元素位置四、右键 -> copy ->copySelector五、代码中获取 一、打开元素选择器 在java采用jsoup爬虫中&#xff0c;返回的是html页面而不是json字段&#xff0c;就需要使用jsou…

[C++11] 右值引⽤与移动语义

文章目录 左值和右值左值&#xff08;Lvalue&#xff09;右值&#xff08;Rvalue&#xff09;区别 左值引⽤和右值引⽤左值引用&#xff08;Lvalue Reference&#xff09;右值引用&#xff08;Rvalue Reference&#xff09;右值引用的特点 右值引用延长生命周期右值引⽤和移动语…

传输层UDP

再谈端口号 端口号&#xff1a;标识了主机上进行通信的不同的应用程序 在TCP/IP 协议中我们用“源IP”"源端口号" “目的IP”“目的端口号” “协议号”五元组来标识一个通信 用netstat -n 查看 查看网络信息&#xff0c;我们有两种命令查看网络通信1.用netsta…

Linux-练习3

题目&#xff1a; 操作过程&#xff1a; 1.建立用户组 shengcan&#xff0c;其id 为 2000 2.建立用户组 caiwu&#xff0c;其id 为 2001 3.建立用户组 jishu&#xff0c;其 id 为 2002 4.建立用户 lee&#xff0c;指定其主组 id 为 shengchan&#xff0c;附加组为 jishu 和…

多GPU训练大语言模型,DDP, ZeRO 和 FSDP

在某些时候&#xff0c;我们可能需要将模型训练扩展到单个 GPU 之外。当模型变得太大无法适应单个 GPU 时&#xff0c;需要使用多 GPU 计算策略。但即使模型适合单个 GPU&#xff0c;使用多个 GPU 来加速训练也是有好处的。即使您正在处理一个小模型&#xff0c;了解如何在多个…

在浏览器中运行 Puppeteer:解锁新能力

Puppeteer&#xff0c;这个强大的浏览器自动化工具&#xff0c;通常在Node.js环境中运行。但你有没有想过&#xff0c;在浏览器本身中运行Puppeteer会是什么样子&#xff1f;这不仅能让我们利用Puppeteer的功能完成更多任务&#xff0c;还能避开Node.js特定的限制。 支持的功…

【Canvas与桌面】文山甲密铺桌面壁纸 1920*1080

【成图】 不加蒙版的部分截图&#xff1a; 加上蒙版的桌面壁纸图&#xff1a; 不加蒙版的桌面壁纸图&#xff1a; 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8&qu…

ts:对象数组的简单使用

ts中对象数组的简单使用 一、主要内容说明二、例子1、源码12、源码1运行效果 三、结语四、定位日期 一、主要内容说明 平常ts创建数组的格式如下&#xff1a; let array:string[]["元素1","元素2","元素3","元素3","元素4"…

Java语言-异常

目录 1.异常的概念与体系结构 1.1 异常的概念 1.2 异常的体系结构 1.3 异常的分类 1.3.1 编译时异常(受查异常) 1.3.2 运行时异常(非受查异常) 2.异常的处理 2.1 防御式编程 2.1.1 LBYL 2.1.2 EAFP 2.2 异常的抛出 2.3 异常的捕获 2.3.1 异常声明throws 2.3.2 …

Spring IoC DI

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多数据结构知识 目录 1. 应用分层 1.1 如何分层: 1.2 MVC与三层架构区别联系 2. Spring 3.IoC & DI⼊⻔ 3.1 什么是IoC&#xff1f; 3.2 DI 介绍 …

ctfshow——web(持续更新)

文章目录 1、web签到题——base64编码特征2、web2——登录框测试&sqlmap使用3、web3——php伪协议 1、web签到题——base64编码特征 查看源代码&#xff1a; base64编码特征&#xff1a;大小写数字&#xff0c;偶尔最后几位是。 2、web2——登录框测试&sqlmap使用 …

合约门合同全生命周期管理系统:企业智能合同管理的新时代

合约门合同全生命周期管理系统&#xff1a;企业智能合同管理的新时代 1. 引言 随着现代企业的快速发展&#xff0c;合同管理的复杂性日益增加。无论是采购合同、销售合同还是合作协议&#xff0c;合同管理已成为企业运营中至关重要的一环。传统的手工合同管理方式往往效率低下…

解读AVL树:平衡二叉搜索树的奥秘

✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C&#xff1a;由浅入深篇 小新的主页&#xff1a;编程版小新-CSDN博客 前言&#xff1a; 前面我们已经介绍了二叉搜…