关于Qt主窗口的菜单部件

news2025/4/17 4:25:33

前言

        在介绍主窗口的两大部件之前,我们要先知道关于主窗口的一些知识。


主窗口 

        一个主窗口可以没有菜单条、工具条、状态条,但必须设置中心部件。在 Q 生成的 C++头文件 ui_mainwindow.h 代码中,我们可以看到以下代码:

centralWidget = new Qwidget(MainWindow);
centralWidget -> setObjectName(Qstring::fromUtf8("centralwidget"));
MainWindow -> setCentralwidget(centralWwwidget);

        主窗口的框架看起来有点复杂,在 Qt Designer 中,一般不必太关心它的实现,Qt 在生成过程中,会自动编译在头文件 ui_mainwindow.h代码中,只需关心自己建立的窗口部件即可。

主窗口的标题 

        修改主窗口的标题有两种方法:一是在ui设计模式中:在设计模式界面右上角的对象面板中,选择MainWindow选项,然后在右下角的属性面板中,选择windowTitle属性修改。

二是自己添加代码:

打开MainWindow.cpp添加:

#include<QTextCodec>

在MainWindow的构造函数中:

Mainwindow::Mainwindow(QWidget *parent):
QMainwindow(parent)
ui(new Ui::Mainwindow)
{
ui->setupui(this);
//设置中文字符
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForTr(QTextCodec::codecForName ("GB2312"));
this->setwindowTitle("我修改了窗口标题");
}

主窗口的图标 

        如果想要给主窗口添加图标,可以从资源文件中来进行选择,在对其他部件或者对象添加图标的时候大多都是在资源文件中进行选择:

1.从文件菜单中选择新建文件或工程(New File or Project)菜单项,在“新建”界面中选择 Qt Resource file 选项:

2. 在工程面板中,打开资源文件 tubiao.qrc,单击 Add 按钮,选择加人前缀“/”:

3.选择添加文件。选择logo.png,图标 logo.jpg 添加到资源文件中:

4.进人设计模式,在窗口属性中,选择 Windowlcon,打开资源选择对话框,单击左上角刷新资源按钮,选择确定图标。

主窗口的基本操作

        在了解到如何设置了标题和图标之后,我们来了解一下关于主窗口的一些基本操作函数

  • close():关闭当前窗口,如果是主窗口同时退出程序。
  • hide():隐藏当前窗口,该操作等同于 setVisible(false)。
  • rect():返回当前窗口内部的区域。
  • resize(const QSize &.)/resize(int,int):调整窗口的大小。
  • setAutoFillBackground(bool):设置自动填充窗口背景,当输人值为 true 时,该操作用窗口的默认值刷新窗口背景;为 false时,不重绘窗口背景。该操作在自定义窗口背景和绘图时很有用。
  • setCentralWidget(QWidget *):设置中心部件。窗口默认的中心部件是QWidget,用户如果想用其他部件替换,可以在 MainWindow 的构造函数中调用此操作。
  • setWindowState(Qt::WindowStates):设置窗口的状态,包括设置窗口为最大化最小化、全屏和活动状态。
  • setWindowTitle(const QString &):设置窗口的标题。
  • show():显示窗口。
  • showFullScreen():全屏显示窗口。
  • showMaximized():最大化显示窗口。
  • showMinimized():最小化显示窗口。
  • showNormal():窗口正常大小显示。
  • update()/update (int, int, int, int)/update (const QRect &.)/update (constQRegion &.):更新窗口的显示,调用该操作后,窗口执行 paintEvent 操作。

菜单

普通版本菜单

        菜单栏为一种树形结构,单击以后即可显示出菜单项,通过菜单项为软件的大多数功能提供功能入口。在ui界面上可以快速设计一个菜单栏(图标添加和上文方法相同):

        并且对每一个选项跳转槽函数进行编辑:

        选择菜单后,在ui界面下方右键单击选项对槽函数进行编辑:

void MainWindow::on_open_action_triggered()
{
    QMessageBox::information(this,"提示","你点击了打开");
}

void MainWindow::on_save_action_triggered()
{
    QMessageBox::information(this,"提示","你点击了保存");
}

void MainWindow::on_quit_action_triggered()
{
    this->close();
}

 

 弹出式菜单

        了解了如何设计菜单和编写菜单代码,弹出式菜单操作就很简单了。首先重载主窗口的 void mousePressEvent(QMouseEvent * event)操作,响应窗口中的鼠标右键信息。然后,在 void mousePressEvent(QMouseEvent *event)操作中,直接在需要单击的位置弹出已经建立的菜单即可,下面的代码给出了上述两种菜单的弹出显示方法:

1.在头文件中增加操作声明:

void mousePressEvent(QMouseEvent *event);

 2.源文件中增加包含文件和 mousePressEvent 操作的实现:

#include<QMouseEvent>

.....


void MainWindow::mousePressEvent(OMouseEvent * event){

    //右键显示自己编码生成的菜单
    if(event->button()==Qt::RightButton){
        aboutMenu->popup(event->globalPos());
    }

    //左键显示 QtDesigner 生成的菜单
    if(event->button()==Qt::LeftButton){
        ui->menu->popup(event->globalPos());
    }   
 
}

希望各位大佬一起交流学习,我也会回访各位大佬的空间的!!!

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

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

相关文章

Three.js加载glb / gltf模型,Vue加载glb / gltf模型(如何在vue中使用three.js,vue使用threejs加载glb模型)

简介&#xff1a;Three.js 是一个用于在 Web 上创建和显示 3D 图形的 JavaScript 库。它提供了丰富的功能和灵活的 API&#xff0c;使开发者可以轻松地在网页中创建各种 3D 场景、模型和动画效果。可以用来展示产品模型、建立交互式场景、游戏开发、数据可视化、教育和培训等等…

BetterDisplay Pro for Mac 显示器校准和优化软件

BetterDisplay Pro for Mac是一款适用于Mac电脑的显示器校准和优化软件。它可以帮助用户校准显示器的颜色、亮度、对比度和伽马值等参数&#xff0c;使得显示器更加准确和清晰&#xff0c;提高用户的工作效率。 BetterDisplay Pro for Mac v2.0.11激活版下载 这款软件具有直观的…

RS232、RS485、RS422、TTL、CAN各自的区别

目录 一&#xff1a;工业串口通信标准RS232、RS485、RS422的区别 第一个区别、硬件管脚接口定义不同 第二个区别、工作方式不同 第三个区别、通信方式不同 第四个区别&#xff0c;逻辑特性不同 第五个区别、抗干扰性、传输距离和传输速率也不同 二&#xff1a;RS232、RS…

记录Python链接mysql数据的增删改查方法

一、添加方法 db pymysql.connect(hostlocalhost,userroot,password123456,dbpython) cursor db.cursor() sql """insert into EMPLOYEEVALUES(3,张,天爱,35,F,8000) """ try:cursor.execute(sql)db.commit() #提交后&#xff0c;数据才会变 …

上班最大的意义,不是那点工资

最近在网上看到这样一段话&#xff1a;“上班最大的意义&#xff0c;不是那点工资&#xff0c;而是工作能让你有规律的生活&#xff0c;有见人的机会&#xff0c;有稳定的社交圈子&#xff0c;还有来自客户&#xff0c;同事&#xff0c;或者或少的压力&#xff0c;一可以锻炼心…

数字革命的先锋:Web3对社会的影响

引言 在信息技术飞速发展的当下&#xff0c;Web3作为一个新兴的互联网模式&#xff0c;正在逐渐改变我们的生活方式、商业模式和社会结构。本文将深入探讨Web3的核心特点、它在各个领域中的应用以及对社会产生的深远影响。 1. Web3的核心特点 1.1 去中心化 Web3强调去中心化…

使用阿里云试用Elasticsearch学习:使用内置模型 lang_ident_model_1 创建管道并使用

文档&#xff1a;https://www.elastic.co/guide/en/machine-learning/current/ml-nlp-deploy-model.html 部署刚刚下载好的内置模型 部署内存不够用 还得花钱&#xff0c;拉几把倒吧。就用自带的吧。 测试模型 POST _ml/trained_models/lang_ident_model_1/_infer {"doc…

大数据快速搭建环境 CDH QuickStart VM虚拟机版本安装

虚拟机镜像安装 下载 https://downloads.cloudera.com/demo_vm/vmware/cloudera-quickstart-vm-5.8.0-0-vmware.zip https://downloads.cloudera.com/demo_vm/vmware/cloudera-quickstart-vm-5.12.0-0-vmware.zip https://downloads.cloudera.com/demo_vm/vmware/cloudera-…

.net core webapi 发布后出现访问不了swagger让人抓狂的原因

.net core webapi 发布出现访问不了swagger让人抓狂 小编最近发布一个测试的webapi,想要给三方测试使用&#xff0c;结果发布后访问不了swagger&#xff0c;找了半天原因急死了。 第一&#xff0c;查看开放端口&#xff0c;都开放了第二&#xff0c;本次编译器执行&#xff0…

FAGLL03H 新增自定义字段

1、SGLPOS_N_GL_CT、SGLPOS_N_CT两个结构新增自定义字段 2、执行t-code:HDBVIEWS 3、实施增强 FAGL_LIB 4、使用select data方法 5、代码示例: method IF_FAGL_LIB~SELECT_DATA.FIELD-SYMBOLS: <fs> TYPE any.FIELD-SYMBOLS <ls_data> TYPE any.F…

Since Maven 3.8.1 http repositories are blocked.

编译maven 项目时候报错提示下面信息&#xff1a; Since Maven 3.8.1 http repositories are blocked.Possible solutions: - Check that Maven settings.xml does not contain http repositories - Check that Maven pom files do not contain http repository http://XXXXXX:…

Proxyman Premium for Mac v5.1.1激活版:卓越的网络调试与分析工具

Proxyman Premium for Mac是一款功能强大的网络调试与分析工具&#xff0c;专为开发人员和测试人员精心打造。它集多种功能于一身&#xff0c;为用户提供了全面、高效的网络开发体验。 Proxyman Premium for Mac v5.1.1激活版下载 作为一款跨平台代理工具&#xff0c;Proxyman …

网站创建的流程是什么

网站的创建过程包括几个主要的步骤&#xff0c;其中涉及到一系列的决策和实践操作。下面我将详细介绍网站创建的流程&#xff0c;帮助读者了解如何创建一个成功的网站。 第一步&#xff1a;确定网站目标和功能 在创建网站之前&#xff0c;你需要明确自己网站的目标和功能。是用…

pytorch Neural Networks学习笔记

&#xff08;1&#xff09;输入图像&#xff0c;13232&#xff0c;通道数1&#xff0c;高32&#xff0c;宽32 &#xff08;2&#xff09;卷积层1&#xff0c;滤波器的shape为6155&#xff0c;滤波器个数6&#xff0c;通道数1&#xff0c;高5&#xff0c;宽5。卷积层1的输出为62…

网络靶场实战-加密固件分析

背景 在漏洞挖掘过程中&#xff0c;想要对二进制程序改进分析&#xff0c;我们就需要获取目标设备的文件系统&#xff0c;这样才能更好的逆向分析设备程序的运行逻辑&#xff0c;从而发现其中的漏洞点。然而并非所有设备固件中的文件系统都可以让我们轻易获取&#xff0c;对于…

什么是上位机?入门指南

什么是上位机&#xff1f; 上位机&#xff08;SCADA&#xff0c;Supervisory Control and Data Acquisition&#xff09;是一种软件系统&#xff0c;用于监控和控制工业过程中的设备。它通常与传感器、执行器和其他自动化设备一起工作&#xff0c;以实时地监视过程状态、收集数…

7 pytorch DataLoader, TensorDataset批数据训练方法

前言 本文主要介绍pytorch里面批数据的处理方法&#xff0c;以及这个算法的效果是什么样的。具体就是要弄明白这个批数据选取的算法是在干什么&#xff0c;不会涉及到网络的训练。 from torch.utils.data import DataLoader, TensorDataset主要实现就是上面的数据集和数据载入…

详解IP安全:【IPSec协议簇 - AH协议 - ESP协议 - IKE协议】

目录 IP安全概述 IPSec协议簇 IPSec的实现方式 AH&#xff08;Authentication Header&#xff0c;认证头&#xff09; ESP&#xff08;Encapsulating Security Payload&#xff0c;封装安全载荷&#xff09; IKE&#xff08;Internet Key Exchange&#xff0c;因特网密钥…

Sourcetree安装使用(补个笔记)

Sourcetree介绍 Sourcetree是一款免费的Git图形化客户端&#xff0c;它由Atlassian开发&#xff0c;提供了跨平台的支持&#xff0c;可运行在Windows和Mac操作系统上。Sourcetree可以让开发者更方便地使用Git来管理代码&#xff0c;不需要在命令行中输入复杂的Git命令&#xf…

C++ | Leetcode C++题解之第31题下一个排列

题目&#xff1a; 题解&#xff1a; class Solution { public:void nextPermutation(vector<int>& nums) {int i nums.size() - 2;while (i > 0 && nums[i] > nums[i 1]) {i--;}if (i > 0) {int j nums.size() - 1;while (j > 0 && …