《二》菜单模块设计实现---添加动作函数等

在菜单栏中,比如:

我们要添加很多像新建,打开,粘贴,复制,加粗,下划线的动作,所以首先我们需要添加一些头文件:

#include <QMainWindow>
#include"mychild.h"
#include<QtWidgets>

//添加相关头文件---用于打印等操作
#include<QPrintDialog>
#include<QPrinter>
#include<QPrintPreviewDialog>

在使用QPaintDialog的时候要在pro文件里添加:不然会报错

QT      +=printsupport

 还要添加菜单类,动作类,下拉框类等:

class MyChild;
class QAction;//被创建后必须将它添加到菜单和工具栏,然后将它连接到实现action功能的槽函数才能实现
class QMenu;//菜单栏--挂载到菜单栏里面的QMenuBar(容器)上面的的
class QComboBox;//选项列表(组合框)
class QFontComboBox;//字体下拉列表框(不能被编辑的,只是用来选择字体)
class QMidArea;//提供一个同时显示多个文档容器区域
class QMdiSubWindow;//大多数复杂项目软件,都是使用MDI框架,QMdiArea用于主容器中,用于容纳多个子窗口QMdiSubWindo
class QSignalMapper;//信号映射器,它可以实现对多个子窗口部件的相同信号进行映射,首先为其添加字符串或者数值参数,然后在发送出去。

如下图所示:当我们点击文件的时候,会有如下选项,每一个选项对应一个函数的实现:

protected:
    void closeEvent(QCloseEvent *event);//通过参数来控制是否让窗口关闭
private:
    void fileNew();//新建
    void fileOpen();//打开
    void fileSave();//保存
    void fileSaveAs();//另存为
    void filePrintfPreview();//打印预览
    void printPreview();//打印

    void undo();//撤销
    void redo();//重做
    void cut();//剪切
    void copy();//复制
    void paste();//粘贴
    void about();//关于

    void textBold();//加粗
    void textIalic();//倾斜
    void textUnderline();//下划线
    void textAlign(QAction *a);//设置段落对齐格式
    void textStyle(int styleIndex);//设置段落的风格
    void textFamily(const QString &f);//字体选择框
    void textSize(const QString &p);//字号
    void textColor();//设置字体颜色

    void updateMenus();//更新菜单
    void updateWindowMenu(); //更新窗口菜单
    void setActiveSubWindow(QWidget *window);
    MyChild *createMyChild();//创建子窗口
private:
    void createActions();//创建菜单操作
    void createMenus();//创建菜单
    void createToolBars();//创建工具条
    void createStatusBar();//创建状态条
    void enabledText();
    void fontChanged(const QFont &f);
    void colorChanged(const QColor &c);
    void alignmentChange(Qt::Alignment a);
    MyChild* activeMyChild();
    QMdiSubWindow *findMyChild(const QString &filename);

    QMdiArea *mdiArea;//多文档窗口管理器
    QSignalMapper *windowMapper;

在菜单栏中我们又会有如下选项:

//定义菜单
    QMenu *fileMenu;//文件菜单
    QMenu *editMenu;//编辑菜单
    QMenu *formatMenu;//格式菜单
    QMenu *fontMenu;//字体子菜单
    QMenu *alignMenu;//段落子菜单
    QMenu *windowMenu;//窗口菜单
    QMenu *helpMenu;//帮助菜单

工具栏:

//工具栏
    QToolBar *fileToolBar;//"文件"工具条
    QToolBar *editToolBar;//"编辑"工具条
    QToolBar *formatToolBar;//"格式"工具条
    QToolBar *comboToolBar;//组合框选择栏
    QComboBox *comboStyle;//子控件-标准组合框
    QFontComboBox *comboFont;//子控件,字体组合框
    QComboBox *comboSize;//子控件:字体大小组合框

菜单动作:

//菜单动作(ACtion)
    QAction *newAct;//新建
    QAction *openAct;//打开
    QAction *saveAct;//保存
    QAction *saveAsAct;//另存为
    QAction *printAct;//打印
    QAction *printPreviewAct;//打印预览
    QAction *exitAct;//退出

编辑主菜单:

//【编辑】主菜单
    QAction *undoAct;//撤销
    QAction *redoAct;//重做
    QAction *cutAct;//剪切
    QAction *copyAct;//复制
    QAction *pasteAct;//粘贴

格式菜单:

//【格式】主菜单
    QAction *boldAct;//加粗
    QAction *italicAct;//倾斜
    QAction *underlineAct;//下划线
    QAction *leftAlignAct;//左对齐
    QAction *centerAct;//居中
    QAction *rightAlignAct;//右对齐
    QAction *justifyAct;//两端对齐
    QAction *colorAct;//颜色

 窗口主菜单:

//【窗口】主菜单
    QAction *closeAct;//关闭
    QAction *closeAllAct;//关闭所有
    QAction *tileAct;//平铺
    QAction *cascadeAct;//层叠
    QAction *nextAct;//下一个
    QAction *previousAct;//前一个
    QAction *separatorAct;//

 以及最后的帮助:

//【帮助】主菜单
    QAction *aboutAct;//关于本软件
    QAction *aboutQtAct;//关于Qt

可以根据不同的情况自己定义。

感谢阅读!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

麒麟信安连续四年被授予湖南省、长沙市“守合同重信用企业”双重荣誉称号

以诚为本&#xff0c;以信立身&#xff0c;**麒麟信安经过多年的市场积累&#xff0c;凭借健全的市场主体信誉机制&#xff0c;良好的社会信誉和合同履约能力&#xff0c;连续四年获评长沙市“守合同重信用”公示企业&#xff08;2023年度&#xff09;、湖南省“守合同重信用”…

OpenAI 或将推出多模态人工智能数字助理;研究发现部分 AI 系统已学会「说谎」丨 RTE 开发者日报 Vol.203

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

海洋环境保护论文阅读记录

海洋环境保护 论文1&#xff1a;Critical role of wave–seabed interactions in the extensive erosion of Yellow River estuarine sediments 波浪-海床相互作用在黄河河口广泛侵中的关键作用 estuatine 河口的&#xff0c;港湾的 erodibility侵蚀度 sediment erodibility …

速了解及使用布隆过滤器

布隆过滤器 介绍 概念&#xff1a;是一种高效查询的数据结构 作用&#xff1a;判断某个元素是否在一个集合中。&#xff08;但是会出现误判的情况&#xff09; 实现原理 加入元素&#xff1a; 当一个元素需要加入到布隆过滤器中时&#xff0c;会使用一组哈希函数对该元素进…

自媒体从0-1起号全流程落地指南。(含工具)

下面开始进入主题&#xff1a; 一、持续涨粉的技巧 持续账号的账号通常是具备以下的几种特征 ①利他性&#xff1a;利他性的核心在于你向用户提供了什么&#xff1f; 可以透过逆向思维来体现&#xff0c;首先要明确目标人群及其需求&#xff0c;然后根据这些需求提供必要的…

JetsonNano —— 3、在Nano板卡编译可硬件加速FFmpeg,测试FFmpeg调用nvmpi编解码器加速

最终FFmpeg运行加速效果如下: FFmpeg 简介 一个完整的跨平台解决方案,用于录制、转换和流式传输音频和视频。   JetsonNano 简介 NVIDIA Jetson Nano为数百万台高性能、低功耗设备提供前所未有的功能。这项技术创新为网络录像机、机器人或具有高级分析功能的智能家居网关等…

java 解决跨域时遇到问题,怎么来做一个跨域环境

今天遇到一个问题&#xff1a; 关于#java#的问题&#xff1a;java 解决跨域时遇到问题&#xff1a;为什么跨域访问时配置的CorsFilter没有进入&#xff1f;直接访问请求地址时进入了配置的CorsFilter 由于没有实际的跨域环境&#xff0c;因此打算在本机建一个跨域环境&#xff…

vue3使用依赖注入实现跨组件传值

父组件Index.vue: <script setup> import { onMounted, provide, ref } from vue import Child from ./Child.vue import ./index.cssconst count ref(0)provide(count, count)const handleClick () > {count.value }onMounted(() > {}) </script><tem…

NSSCTF | [第五空间 2021]WebFTP

注意看这里的题目标签&#xff0c;目录扫描&#xff0c;.git泄露。那么这道题虽然打开是一个登录的界面&#xff0c;但是并不是我们熟悉的爆破和SQL注入。 但是可以在题目标签上看到目录扫描&#xff0c;我们就用dirsearch扫一扫看看 python dirsearch.py -u http://node4.ann…

51单片机实现俄罗斯方块游戏编程

一、设计要求 &#xff08;1&#xff09;利用51单片机&#xff0c;设计一款俄罗斯方块游戏&#xff0c;完成硬件电路的开发和程序的编写调试&#xff1b; &#xff08;2&#xff09;采用LCD12864液晶作为游戏运行界面&#xff1b; &#xff08;3&#xff09;利用按键输入灵活…

[OpenGL] PCF 柔和阴影

目录 一 为什么要使用PCF技术? 二 算法 三 效果 本章节源码点击此处 一 为什么要使用PCF技术? 在阴影改善这篇文章最后我们发现阴影的边缘锯齿化很严重,对于这种问题主要是因为采样精度的问题对于不同片段有可能从深度纹理中采样到了同一个纹理像素,这就导致形成了明显的…

采用java+B/S开发的全套医院绩效考核系统源码springboot+mybaits 医院绩效考核系统优势

采用java开发的全套医院绩效考核系统源码springbootmybaits 医院绩效考核系统优势 医院绩效管理系统解决方案紧扣新医改形势下医院绩效管理的要求&#xff0c;以“工作量为基础的考核方案”为核心思想&#xff0c;结合患者满意度、服务质量、技术难度、工作效率、医德医风等管…

Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)

1 漏洞概述 CVE-2018-2628 是 Oracle WebLogic Server&#xff08;WLS&#xff09;核心组件中的一个反序列化命令执行漏洞。此漏洞允许未授权的用户通过 T3 协议在远程服务器上执行任意命令&#xff0c;从而可能完全控制受影响的服务器。 2 影响版本 该漏洞影响了以下版本的…

宁夏银川最牛起名大师的老师颜廷利:宝与饱,饿跟恶

对于中国优秀传统文化之根-汉语而言&#xff0c; 恶&#xff0c;对应着‘饿’&#xff1b; 宝&#xff0c;对应着‘饱’… 由此可见&#xff0c;无论是‘饿’&#xff08;与‘恶’同音&#xff09;&#xff0c;还是‘饱’&#xff08;与‘宝’通音&#xff09;&#xff0c;实际…

粒子群算法(Particle Swarm Optimization)

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 算法背景 粒子群优化算法&#xff08;Particle Swarm Optimization&#xff0c;PSO&#xff09;的灵感来源于鸟群或鱼群的觅食行为。想象一下&a…

python怎么遍历字符串

python怎么遍历字符串&#xff1f;下面给大家介绍四种方法&#xff1a; 1、第一种方式&#xff0c;使用for in遍历字符串。 girl_str "love You" for everyChar in girl_str:print everyChar 2、第二种方式&#xff0c;使用range()或xrange()&#xff0c;把字符串…

iOS MRC那句话

混编时使用MRC文件需要使用这句话 -fno-objc-arc在下图中显示的位置添加

vue:网页icon无法显示

logo文件放在public文件夹下&#xff0c;在html里设置icon。 本地源码运行后发现网页icon无法显示我们设置的logo&#xff0c;而是显示了浏览器默认icon。 这个问题不需要解决&#xff0c;部署后网页icon显示就正常了。

【软考网络工程师】每日练题学知识

1.在EIGRP协议中&#xff0c;某个路由器收到了两条路径到达目标网络&#xff0c;路径1的带宽为100Mbps&#xff0c;延迟2ms&#xff0c;路径2的带宽为50Mbps&#xff0c;迟为4ms&#xff0c;如果EIGRP使用带宽和延迟的综合度量标准&#xff0c;那么该路由器选择的最佳路径是&am…

【MySQL的内外连接】

文章目录 一、内连接二、外连接1.左外连接2.右外连接 一、内连接 基本语法&#xff1a; select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件&#xff1b;&#xff08;这里的and&#xff0c;也可以修改成where&#xff0c;并且建议使用where&#xff0c;逻辑更清晰…