Qt系统学习篇(6)-QMainWindow

QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。
在这里插入图片描述
1.1 菜单栏 最多有一个

  • QMenuBar * bar = MenuBar(); 创建菜单栏
  • setMenuBar(bar)
  • QMenu * fileMenu = bar -> addMenu("文件”) 创建菜单
  • QAction*newAction= fileMenu ->addAction(“新建”); 创建菜单项
  • fileMenu->addseparator(); 添加分割线

1.2 工具栏 可以有多个

  • QToolBar * toolbar = new QToolBar(this);*
  • addToolBar(默认停靠区域,toolbar );

1.3 状态栏 最多一个

  • QstatusBar" stBar= statusBar();.
  • 设置到窗口中 setstatusBar(stBar);
  • stBar->addwidget(label);放左侧信息
  • stBar->addPermanentWidget(label2);放右侧信息

1.4 铆接部件 - 浮动窗口 可以多个

  • QDockwidget
  • addDockwidge t( 默认停靠区域,浮动窗口指针)
  • 设置后期停靠区域

1.5 核心部件 只能一个

  • QTextEdit
  • setCentralwidget(edit);.

1、菜单栏、工具栏

mainWindow.cpp
#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{resize(600,400);this->setFixedSize(this->size());//创建菜单栏,放到窗口里QMenuBar*bar=menuBar();setMenuBar(bar);//创建菜单QMenu *fileMenu=bar->addMenu("文件");QMenu *editMenu=bar->addMenu("编辑");//创建菜单项、分割线QAction *newAction=fileMenu->addAction("新建");fileMenu->addSeparator();fileMenu->addAction("打开");//工具栏,可以有多个QToolBar *toolBar=new QToolBar(this);addToolBar(Qt::LeftToolBarArea,toolBar);//设置停靠、浮动toolBar->setAllowedAreas( Qt::LeftToolBarArea | Qt::RightToolBarArea);toolBar->setFloatable(false);//移动 (总开关)toolBar->setMovable(false);//工具栏添加内容toolBar->addAction(newAction);QPushButton* btn=new QPushButton(this);btn->setText("btn");toolBar->addWidget(btn);
}MainWindow::~MainWindow()
{
}

实际ui效果
在这里插入图片描述

2、状态栏、铆接部件、核心部件

/******************状态栏**********************/
QStatusBar *stBar=statusBar();
setStatusBar(stBar);
QLabel* label1=new QLabel("提示信息",this);
QLabel* label2=new QLabel("右侧提示信息",this);
stBar->addWidget(label1);
stBar->addPermanentWidget(label2);
/******************铆接(浮动窗口)**************/
QDockWidget* dockWidget=new QDockWidget(this);
addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
// dockWidget->setFloating(true);
/******************中心部件********************/
QTextEdit* textEdit=new QTextEdit(this);
setCentralWidget(textEdit);

效果图:1、2、3分别为状态栏、铆接、核心部件
在这里插入图片描述

3、资源文件添加

  • 图片拷贝到项目位置下
  • 新建-Qt-Qt resource File ,给资源文件起名res.qrc
  • open in editor 编辑资源,再添加前缀、添加文件

4、模态和非模态对话框

模态:不可以对其他窗口进行操作,阻塞
非模态对话框: 可以对其他窗口进行操作

mainWidget.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"#include <QDialog>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);connect(ui->actionnew,&QAction::triggered,[=](){QDialog dialog1(this);dialog1.exec();qDebug()<<"模态对话框弹出了";
//       QDialog dialog2(this);QDialog*dialog2=new QDialog(this);//在堆上创建,防止一闪而过dialog2->show();dialog2->setAttribute(Qt::WA_DeleteOnClose);//关闭时就释放qDebug()<<"非模态对话框弹出了";});
}MainWindow::~MainWindow()
{delete ui;
}

5、 QMessageBox对话框

MessageBox的5个参数

QMessageBox::information(NULL,"information","是否退出系统",QMessageBox::No|QMessageBox::Yes,QMessageBox::No);

第一个参数:是父控件指针
第二个参数:标题名称
第三个参数:信息提示框内容
第四个参数:信息提示框里面有多少个按钮,一般情况下默认为OK
第五个参数:指定按下Enter键时使用的按钮

(1)、QMessageBox 5种用法

information 消息
critical 错误
warning 警告
question 提问
about 默认消息

在这里插入图片描述

QMessageBox::information(NULL,"information","是否退出系统",QMessageBox::No|QMessageBox::Yes,QMessageBox::No);
QMessageBox::critical(NULL,"critical","出错",QMessageBox::No|QMessageBox::Yes,QMessageBox::No);
QMessageBox::warning(NULL,"warning","警告,删除文件有危害",QMessageBox::No|QMessageBox::Yes,QMessageBox::No);
QMessageBox::question(NULL,"question","您的年龄是?",QMessageBox::No|QMessageBox::Yes,QMessageBox::No);
QMessageBox::about(NULL,"about","默认消息提示框");  //默认用法

(2)、判断QMessageBox 消息框里用户选择了哪个按钮:

void Widget::on_pushButton_iconChose_clicked()
{QMessageBox messageBox(QMessageBox::NoIcon,"登录","是否登录系统",QMessageBox::No|QMessageBox::Yes,NULL);int iResult=messageBox.exec();switch (iResult) {case QMessageBox::No:QMessageBox::about(NULL,"提示","你选择了no按钮");break;case QMessageBox::Yes:QMessageBox::about(NULL,"提示","你选择了yes按钮");default:break;}
}

在这里插入图片描述

(3)、 其他对话框

文件对话框

参数1 父亲 参数2 标题 参数3默认打开路径 参数4 过滤文件格式 返回值 选取文件的路径

QString str=QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\Admin\\Pictures\\Saved Pictures","(*.jpg)");

字体对话框

bool flag;
QFont font =QFontDialog::getFont(&flag,QFont("华文彩云",36));
qDebug()<<"字体"<<font.family().toUtf8().data()<<"字号"<<font.pointSize()<<"是否加粗"<<font.bold()<<"是否倾斜"<<font.italic();

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

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

相关文章

不同环境不同的配置文件;不同地区的数据库连接

不同地区的数据库不同&#xff0c;是怎么找到不同的数据库的 在Spring Boot项目中&#xff0c;如果存在application.yml、application-test.yml、application-prod.yml等多个配置文件&#xff0c;Spring Boot会根据当前激活的配置文件环境来决定使用哪个配置文件。以下是关于如…

MyBatisPlus——学习笔记

MyBatisPlus 一、导入依赖 <!-- MyBatisPlus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.2</version></dependency><!-- MySql --><de…

物理学基础精解【41】

文章目录 核物理基础 Υ \varUpsilon Υ衰变1. Υ \varUpsilon Υ衰变的一般性质2. 具体的衰变模式3. 衰变公式和机制4. 实验观测和理论研究 Υ \varUpsilon Υ衰变概述一、定义二、公式三、定理一、定义二、公式三、定理 重带电粒子概述重带电粒子的性质重带电粒子的公式 重带…

【AIGC】VoiceControl for ChatGPT指南:轻松开启ChatGPT语音对话模式

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;安装VoiceControl for ChatGPT插件&#x1f4af;如何使用VoiceControl for ChatGPT进行语音输入VoiceControl for ChatGPT快捷键注意点 &#x1f4af;VoiceControl for C…

mfc140u.dll缺失?快速解决方法全解析,解决mfc140u.dll错误

当你的电脑出现找不到mfc140u.dll的问题&#xff0c;不少用户在使用电脑时陷入了困扰。这个错误提示就像一道屏障&#xff0c;阻挡了用户正常使用某些软件。无论是办公软件、游戏还是专业的设计工具&#xff0c;一旦出现这个问题&#xff0c;都会导致软件无法正常运行。如果您也…

jQuery 选择器

jQuery 是什么&#xff1f; jQuery 是一个非常流行的 JavaScript 库&#xff0c;它简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。本篇博客将介绍一些常用的 jQuery 方法&#xff0c;帮助你更轻松地使用 jQuery 进行 Web 开发。 一、DOM 选择与遍历 1.1 基本选择器 $…

python:reportlab 将多个图片合并成一个PDF文件

承上一篇&#xff1a;java&#xff1a;pdfbox 3.0 去除扫描版PDF中文本水印 # 导出扫描版PDF文件中每页的图片文件 java -jar pdfbox-app-3.0.3.jar export:images -prefixtest -i your_book.pdf 导出 Writing image: test-1.jpg Writing image: test-2.jpg Writing image: t…

webGL入门(六)图形旋转

效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</…

ndb9300public-ndb2excel简介

1 引言 ndb9300是一个自己定义的机载导航数据库劳作&#xff08;不敢称为项目&#xff09;代号&#xff0c;其中3表示是第3种数据库。 多年前&#xff0c;对在役民航客机中的某型机载导航数据库的二进制文件进行分析&#xff0c;弄明白它的数据结构后做了几个工具&#xff0c…

Redis-持久化机制

Redis持久化方式 rdb -> 全量 aof -> 增量 也可以两种同时开启&#xff0c;混合持久化(4.0 后) rdb 简介 配置文件 redis 6.0.16 及其以下 redis 6.2 7.0 配置说明 有两种触发方式&#xff1a;手动&#xff0c;自动 修改 save 5 2dir /myredis/dump (储存的文件夹需…

【机器学习】探索GRU:深度学习中门控循环单元的魅力

目录 &#x1f354; GRU介绍 &#x1f354; GRU的内部结构图 2.1 GRU结构分析 2.2 GRU工作原理 2.4 Bi-GRU介绍 2.3 使用Pytorch构建GRU模型 2.5 GRU优缺点 &#x1f354; 小结 学习目标 &#x1f340; 了解GRU内部结构及计算公式. &#x1f340; 掌握Pytorch中GRU工具…

1000题-计算机网络系统概述

术语定义与其他术语的关系SDU&#xff08;服务数据单元&#xff09;相邻层间交换的数据单元&#xff0c;是服务原语的表现形式。在OSI模型中&#xff0c;SDU是某一层待传送和处理的数据单元&#xff0c;即该层接口数据的总和。 - SDU是某一层的数据集&#xff0c;准备传递给下一…

【开源免费】基于SpringBoot+Vue.JS洗衣店订单管理系统(JAVA毕业设计)

本文项目编号 T 068 &#xff0c;文末自助获取源码 \color{red}{T068&#xff0c;文末自助获取源码} T068&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 顾…

vue框架学习 -- 日历控件 FullCalendar 使用总结

最近在项目中要实现日期排班的功能&#xff0c;正好要用到日历视图的控件&#xff0c;经过对比发现&#xff0c;vue 中 使用 FullCalendar 可以实现相关需求&#xff0c;下面对使用过程做一个总结。 一. 引入 FullCalendar 控件 package.json 中添加相关依赖 "dependen…

基于PyQt5和SQLite的数据库操作程序

基于PyQt5和SQLite的数据库操作程序:功能解析 在现代办公和数据处理中,数据库操作是不可或缺的一部分。然而,传统的数据库管理工具往往界面复杂,操作繁琐,对于非专业人士来说存在一定的学习曲线。为了解决这个问题,我们开发了一款基于PyQt5和SQLite的数据库操作程序。该…

【CSS in Depth 2 精译_043】6.5 CSS 中的粘性定位技术 + 本章小结

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09;第二章 相对单位&#xff08;已完结&#xff09;第三章 文档流与盒模型&#xff08;已完结&#xff09;第四章 Flexbox 布局&#xff08;已…

.net Framework 4.6 WebAPI 使用Hangfire

C# 使用 Hangfire 第一章 .net Framework 4.6 WebAPI 使用Hangfire 文章目录 C# 使用 Hangfire前言一、hangfire是什么?二、hangfire的特点三、.net Framework 中hangfire的使用方法第一步:创建WebAPI控制器第二步:添加nuget包第三步 创建startup类新建项目startup类Startu…

python 实现Luhn (Mod 10)Algorithm算法

Luhn (Mod 10)Algorithm算法介绍 Luhn算法&#xff08;也称为“模10”或Mod 10算法&#xff09;是一种简单的校验和算法&#xff0c;主要用于验证身份识别码&#xff0c;如银行卡号、信用卡号、国际移动设备辨识码&#xff08;IMEI&#xff09;、美国国家提供商标识号码、加拿…

Rust 语言开发 ESP32C3 并在 Wokwi 电子模拟器上运行(esp-hal 非标准库、LCD1602、I2C)

文章目录 esp-rs 简介GithubRust 包仓库Rust 教程Wokwi 电子模拟器开发环境Rust 环境esp-rs 环境创建 ESP32C3 项目项目结构编译项目命令运行模拟器ESP32C3 烧录 esp-rs 简介 esp-rs 是一个专注于为 Espressif 系列芯片&#xff08;如 ESP32、ESP32-S2、ESP32-C3 等&#xff0…

TypeScript 算法手册 - 【冒泡排序】

文章目录 TypeScript 算法手册 - 冒泡排序1. 冒泡排序简介1.1 冒泡排序定义1.2 冒泡排序特点 2. 冒泡排序步骤过程拆解2.1 比较相邻元素2.2 交换元素2.3 重复过程 3. 冒泡排序的优化3.1 提前退出3.2 记录最后交换位置案例代码和动态图 4. 冒泡排序的优点5. 冒泡排序的缺点总结 …