当前位置: 首页 > news >正文

QT编程,QMainWindow、事件

目录

1、QMainWindow

2、事件

1、QMainWindow

       QMenuBar:菜单栏

       QMenu: 菜单

       QAction: 动作

       QToolBar: 工具栏

       QStatusBar: 状态栏

      

    setWindowTitle("主窗口");

    //: + 前缀 + 文件名

    setWindowIcon(QIcon(":/mw_images/10.png"));

    resize(640, 480);

    //一个主窗口只能有一个菜单栏

    QMenuBar *menuBar = this->menuBar();

    //可以增加多个菜单

    //QMenu *fileMenu = menuBar->addMenu(QIcon(":/mw_images/file.png"), "文件");

    QMenu *fileMenu = menuBar->addMenu("文件");

    QMenu *editMenu = menuBar->addMenu("编辑");

    QMenu *setMenu = menuBar->addMenu("设置");

    //一个菜单可以增加多个菜单项

    openAct = fileMenu->addAction(QIcon(":/mw_images/open.png"), "打开文件");

    fileMenu->addSeparator();

    closeAct = fileMenu->addAction(QIcon(":/mw_images/close.png"), "关闭文件");

    //增加工具栏,一个主窗口可以有多个工具栏

    QToolBar *fileTool = this->addToolBar("文件");

    fileTool->addAction(openAct);

    fileTool->addAction(closeAct);

    fileTool->setAllowedAreas(Qt::TopToolBarArea | Qt::BottomToolBarArea);

    fileTool->setFloatable(true);

    fileTool->setMovable(true);

    //每个工具栏可以有多个工具项

    QToolBar *editTool = this->addToolBar("编辑");

    editTool->addAction(copyAct);

    editTool->addAction(pasteAct);

    QToolBar *setTool = this->addToolBar("设置");

    setTool->addAction(fontAct);

    setTool->addAction(colorAct);

    //一个主窗口可以有多个滑动窗口

    QDockWidget *dw1 = new QDockWidget("滑动窗口");

    dw1->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);

    dw1->setFloating(false);

    //增加一个滑动窗口

    addDockWidget(Qt::LeftDockWidgetArea, dw1);

    //一个主窗口只能有一个中央部件

    te = new QTextEdit;

    te->setFixedSize(640, 480);

    setCentralWidget(te);

    //一个主窗口只能有个状态栏

    QStatusBar *statBar = this->statusBar();

    lb_status = new QLabel;

    lb_status->setText("xxx file is editing... ");

    prog_bar = new QProgressBar;

    prog_bar->setValue(67);

    statBar->addWidget(lb_status);

    statBar->addWidget(prog_bar);

2、事件

              //事件处理的统一的入口

              bool event(QEvent *event);

              //特定事件处理器

              void mousePressEvent(QMouseEvent *e);  --- 鼠标按下事件

                     e->button();  --- 获取鼠标按键

                            Qt::LeftButton(); --- 左键

                            Qt::RightButton();  --- 右键

                     e->pos();   --- 获取该界面鼠标坐标

                     e->x();     --- 获取该界面鼠标的x坐标

                     e->y();

                     e->globalPos();  --- 获取全局界面(屏幕)鼠标坐标

                     e->globalX();

                     e->globalY();

              void mouseReleaseEvent(QMouseEvent *e);  --- 鼠标松开事件

              void mouseMoveEvent(QMouseEvent *e);     --- 鼠标移动事件

              void mouseDoubleClickEvent(QMouseEvent *e); --- 鼠标双击事件

              void wheelEvent(QWheelEvent *e);  --- 滚轮事件

                     e->angleDelta();

                     e->delta();    --- 获取滚轮增量

              void keyPressEvent(QKeyEvent *e);  --- 按键按下事件

                     e->key(); --- 获取按键

                            Qt::Key_A

                            Qt::Key_0

                            Qt::Key_Up;

                            Qt::Key_Down;

                            Qt::Key_Return/Qt::Key_Enter

              void keyReleaseEvent(QkeyEvent *e);  --- 按键松开事件

              void timerEvent(QTimerEvent *e);   --- 定时器时间

                        startTimer(int ms);

相关文章:

QT编程,QMainWindow、事件

目录 1、QMainWindow 2、事件 1、QMainWindow QMenuBar:菜单栏 QMenu: 菜单 QAction: 动作 QToolBar: 工具栏 QStatusBar: 状态栏 setWindowTitle("主窗口"); //: 前缀 文件名 setWindowIcon(QIcon(":/mw_images/10.png")); resize(640, 4…...

人工智能在教育上的应用2-基于大模型的未来数学教育的情况与实际应用

大家好,我是微学AI ,今天给大家介绍一下人工智能在教育上的应用2-基于大模型的未来数学教育的情况与实际应用,随着人工智能(AI)和深度学习技术的发展,大模型已经开始渗透到各个领域,包括数学教育。本文将详细介绍基于大模型在数学…...

C++学习day5

目录 作业&#xff1a; 1> 思维导图 2> 多继承代码实现沙发床 1>思维导图 2> 多继承代码实现沙发床 #include <iostream>using namespace std; //创建沙发类 class sofa { private:string sitting; public:sofa(){cout << "sofa的无参构造函数…...

1.软件开发-HTML结构-元素剖析

元素的嵌套 代码注释 ctrl/ URL url 统一资源定位符 一个给定的独特资源在web上的地址 URI...

QTableWidget 表格增删数据

QTableWidgetQTableWidgetQTableWidget部分使用方法&#xff0c;如在表格中插入或删除一行数据以及清空表格数据等。在添加数据时&#xff0c;设置了条件判断如正则表达式&#xff0c;若用户输入的数据不合法&#xff0c;则添加失败并提示用户错误的地方&#xff0c;便于用户修…...

Tableau:商业智能(BI)工具

Tableau入门 1、Tableau概述2、Tableau Desktop2.1、初识Tableau Desktop2.2、Tableau工作区2.3、数据窗格与分析窗格2.4、功能区和标记卡2.4.1、列和行功能区2.4.2、标记卡2.4.3、筛选器功能区2.4.4、页面功能区2.4.5、附加功能区、图例、控件 3、Tableau视图4、Tableau工作簿…...

【gmail注册教程】手把手教你注册Google邮箱账号

手把手教你注册Google邮箱账号 写在前面&#xff1a; 要注意&#xff0c;注册Google邮箱必须要确保自己能够 科学上网&#xff0c;如果暂时做不到&#xff0c;请先进行相关学习。使用的手机号是大陆&#xff08;86&#xff09;的。 在保证自己能够科学上网后&#xff0c;在浏…...

docker版jxTMS使用指南:数据采集系统的高可用性

本文讲解4.6版jxTMS中数据采集系统的高可用性&#xff0c;整个系列的文章请查看&#xff1a;4.6版升级内容 docker版本的使用&#xff0c;请查看&#xff1a;docker版jxTMS使用指南 4.0版jxTMS的说明&#xff0c;请查看&#xff1a;4.0版升级内容 4.2版jxTMS的说明&#xff…...

vue如何禁止通过页面输入路径跳转页面

要禁止通过页面输入路径跳转页面&#xff0c;你可以使用Vue Router的导航守卫&#xff08;navigation guards&#xff09;来拦截导航并阻止不希望的跳转。 下面是一种常见的方法&#xff0c;你可以在全局导航守卫&#xff08;global navigation guards&#xff09;中实现这个功…...

mac,linux环境的基础工具安装【jdk,tomcat】

安装 一 linux环境一&#xff09;、JDK安装卸载&#xff1a; 二&#xff09;、 tomcat 安装1、[下载](https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-8/v8.5.63/bin/apache-tomcat-8.5.63.tar.gz)后&#xff0c;在目录 /usr/local/tomcat下&#xff0c;解压缩2、配置tomca…...

chrome窗口

chrome 窗口的层次&#xff1a; 父窗口类名&#xff1a;Chrome_WidgetWin_1 有两个子窗口&#xff1a; Chrome_RenderWidgetHostHWNDIntermediate D3D Window // 用于匹配 Chrome 窗口的窗口类的前缀。 onst wchar_t kChromeWindowClassPrefix[] L"Chrome_WidgetWin_…...

某快递公司Java一面

1.平衡二叉树和红黑树的区别&#xff1f; 平衡二叉树是一种二叉搜索树&#xff0c;其左子树和右子树的高度差不超过1&#xff0c;以确保在最坏情况下的查找效率是O(log n)。而红黑树是一种自平衡二叉搜索树&#xff0c;通过引入颜色标记&#xff08;红色和黑色&#xff09;来维…...

【C++ Primer Plus学习记录】指针——声明和初始化指针

指针用于存储值的地址&#xff0c;因此&#xff0c;指针名表示的地址。*运算符被称为间接值或解除引用运算符&#xff0c;将其应用于指针&#xff0c;可以得到该地址处存储的值。 例如&#xff0c;假设manly是一个指针&#xff0c;则manly表示的是一个地址&#xff0c;而*manl…...

切换至root用户时,命令提示符颜色为白色,如何修改?

当我切换至root用户时&#xff0c;发现命令提示符里的内容全部为白色&#xff0c;如图所示&#xff1a; 这让人看着不愉快&#xff0c;上网先搜索下解决方案&#xff1a;【切换到 root 账户字体全是白的&#xff0c;怎么改颜色啊】- 百度贴吧&#xff0c;但是这个解决方案只是…...

设计模式——17. 状态模式

1. 说明 状态模式(State Pattern)是一种行为设计模式,它允许一个对象在其内部状态发生改变时改变其行为。状态模式将对象的状态封装成不同的状态对象,并将状态切换时的行为委托给当前状态对象。这样,对象在不同状态下具有不同的行为,而无需在对象本身中使用大量的条件语…...

系统架构设计:14 论软基于架构的软件设计方法(ABSD)的软件开发

目录 1 基于架构的软件设计(ABSD) 2 基于架构的软件开发过程 2.1 架构需求过程 2.2 架构设计过程</...

如何在 Spring Boot 中进行文件上传

在 Spring Boot 中进行文件上传 文件上传是Web应用程序中常见的功能之一&#xff0c;它允许用户将文件从客户端上传到服务器。Spring Boot提供了便捷的方式来处理文件上传&#xff0c;并且整合了Spring框架的强大功能&#xff0c;使文件上传变得相对简单。本文将介绍如何在Spr…...

Python 图形化界面基础篇:将应用程序打包为可执行文件

Python 图形化界面基础篇&#xff1a;将应用程序打包为可执行文件 引言 PyInstaller 简介步骤1&#xff1a;安装 PyInstaller 步骤2&#xff1a;创建 Python GUI 应用程序步骤3&#xff1a;使用 PyInstaller 打包应用程序 完整示例代码解释结论 引言 在开发完一个图形用户界面…...

Android 13.0 蓝牙遥控器确认键弹不出输入法的解决方法

1.概述 在android13.0设备定制化开发时,遥控器是使用红外遥控器,也有使用蓝牙遥控器的,所以出现的问题不一定相同,今天遇到个问题就是蓝牙遥控器在输入数据时弹不出输入法的问题 首选排除输入法的问题,安装其他的输入法,也是同样的问题,这样就确定是系统EditText控件相关…...

spring boot面试50问

目录 前言&#xff1a; 1. 什么是 Spring Boot&#xff1f; 2. 为什么要用SpringBoot&#xff1f; 3. SpringBoot与SpringCloud 区别&#xff1f; 4. Spring Boot 有哪些优点&#xff1f; 5. Spring Boot 的核心注解是哪个&#xff1f;它主要由哪几个注解组成的&#xff1…...

RPA文件深度解析与高效提取指南:从原理到实战的完整解决方案

RPA文件深度解析与高效提取指南&#xff1a;从原理到实战的完整解决方案 【免费下载链接】unrpa A program to extract files from the RPA archive format. 项目地址: https://gitcode.com/gh_mirrors/un/unrpa 问题定位&#xff1a;RPA文件的技术挑战与解决方案 识别…...

3大突破!自动化资源管理工具重塑数字资产管控模式

3大突破&#xff01;自动化资源管理工具重塑数字资产管控模式 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 一、问题定位&#xff1a;数字时代的资源管理困境 1.1 医疗机构&#xff1a;影像资…...

JavaScript中的面板拖动与调整大小

介绍 在现代的Web应用中,面板的拖动和调整大小是一个常见的需求。用户希望能够通过拖动边界线来改变面板的尺寸,尤其是在具有多面板布局的应用中。这篇文章将详细探讨如何使用JavaScript实现这一功能,并结合一个实际案例进行说明。 问题描述 用户遇到的问题是无法通过拖动…...

Obsidian 完全指南:从入门到精通

一、简介 Obsidian 是一款基于 Markdown 的本地知识管理工具,以双向链接和插件生态著称。 什么是 Obsidian Obsidian 是一款基于本地 Markdown 文件的知识管理和笔记工具。所有笔记以纯文本 .md 文件存储在本地,数据完全由用户掌控,无需依赖云端服务。也可以平替Typora。 …...

开源工具BilibiliDown:高效解决B站音频提取与批量处理问题

开源工具BilibiliDown&#xff1a;高效解决B站音频提取与批量处理问题 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirro…...

跨设备移动计算的挑战与突破:Portable-VirtualBox实现系统随身化方案

跨设备移动计算的挑战与突破&#xff1a;Portable-VirtualBox实现系统随身化方案 【免费下载链接】Portable-VirtualBox Portable-VirtualBox is a free and open source software tool that lets you run any operating system from a usb stick without separate installatio…...

新手福音:零基础在快马平台创建你的第一个口播智能体

今天想和大家分享一个特别适合编程新手的实战项目——在InsCode(快马)平台上创建一个旗博士口播智能体。这个项目不需要任何后端知识&#xff0c;用最基础的HTML和JavaScript就能实现&#xff0c;而且能让你直观感受到AI应用的开发流程。 项目整体思路 这个口播智能体的核心功能…...

零基础也能快速上手AI建站工具:手把手教你10分钟生成网站

很多人想建站但一直被技术门槛劝退&#xff0c;觉得需要代码、会设计、能写文案。其实现在用AI建站工具&#xff0c;这些都可以交给机器。这套通用教程不针对某个具体工具&#xff0c;而是拆解任何零基础建站工具都适用的核心操作步骤。跟着做&#xff0c;你也能在10分钟左右从…...

BGE-Large-Zh效果可视化:向量维度投影图+相似度分布直方图双模展示

BGE-Large-Zh效果可视化&#xff1a;向量维度投影图相似度分布直方图双模展示 1. 项目概述 BGE-Large-Zh是一款专为中文语义理解设计的本地化向量化工具&#xff0c;基于BAAI的bge-large-zh-v1.5模型开发。这个工具能够将中文文本转换为1024维的语义向量&#xff0c;并通过计…...

终极指南:10分钟搞定网易云音乐NCM加密文件转换

终极指南&#xff1a;10分钟搞定网易云音乐NCM加密文件转换 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐的加密NCM文件无法在其他播放器使…...