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

网站开发学习流程网站开发和维护费用

网站开发学习流程,网站开发和维护费用,网站页面设计具体步骤,网站建设氺首选金手指13qt-C笔记之addAction和addMenu的区别以及QAction的使用场景 code review! 文章目录 qt-C笔记之addAction和addMenu的区别以及QAction的使用场景1.QMenu和QMenuBar的关系与区别2.addMenu和addAction的使用场景区别3.将QAction的信号连接到槽函数4.QAction的使用场景5.将例1修改…

qt-C++笔记之addAction和addMenu的区别以及QAction的使用场景

code review!

文章目录

  • qt-C++笔记之addAction和addMenu的区别以及QAction的使用场景
    • 1.QMenu和QMenuBar的关系与区别
    • 2.addMenu和addAction的使用场景区别
    • 3.将QAction的信号连接到槽函数
    • 4.QAction的使用场景
    • 5.将例1修改为不使用QMainWindow,使用QWidget
    • 6.QMenuBar *menuBar = new QMenuBar(&window); 详解

1.QMenu和QMenuBar的关系与区别

QMenuQMenuBar是Qt中用于创建菜单的两个类,它们之间存在关系和区别。

  1. 关系:

    • QMenuBar是顶层窗口的菜单栏,通常位于窗口的顶部,负责承载和管理菜单。
    • QMenu是菜单栏中的一个菜单项,可以包含子菜单、动作等。

    通常情况下,你会创建一个QMenuBar对象作为主窗口的菜单栏,然后使用addMenu方法添加多个QMenu对象作为菜单栏的菜单项。

  2. 区别:

    • QMenuBar是一个顶级窗口部件,用于承载和管理菜单。它通常只有一个,并且位于主窗口的顶部。
    • QMenu是一个弹出菜单或子菜单,它可以包含多个菜单项(QAction),以及子菜单(另一个QMenu)。

    总的来说,QMenuBar是用于创建和管理菜单栏的部件,而QMenu是用于创建和管理菜单的部件。QMenuBar通常只有一个,用于承载多个QMenu对象,而每个QMenu对象可以包含多个菜单项和子菜单。

以下是一个简单的示例代码,演示了如何创建QMenuBarQMenu
例1

在这里插入图片描述

代码

#include <QApplication>
#include <QMainWindow>
#include <QMenuBar>
#include <QMenu>
#include <QAction>int main(int argc, char *argv[]) {QApplication app(argc, argv);QMainWindow mainWindow;QMenuBar *menuBar = mainWindow.menuBar();QMenu *fileMenu = menuBar->addMenu("File");QAction *newAction = fileMenu->addAction("New");QAction *openAction = fileMenu->addAction("Open");QMenu *editMenu = menuBar->addMenu("Edit");QAction *cutAction = editMenu->addAction("Cut");QAction *copyAction = editMenu->addAction("Copy");mainWindow.show();return app.exec();
}

上述示例中,首先创建了一个QMenuBar对象,然后使用addMenu方法在菜单栏中添加了两个QMenu对象:FileEdit。每个QMenu对象又通过addAction方法添加了相应的动作(菜单项)。

总结:QMenuBar是用于创建和管理菜单栏的顶级窗口部件,而QMenu是用于创建和管理菜单的部件。QMenuBar可以包含多个QMenu对象作为菜单项,而每个QMenu对象可以包含多个菜单项和子菜单。

2.addMenu和addAction的使用场景区别

addMenuaddAction是用于在菜单(QMenu)中添加菜单项(QAction)的函数,它们有不同的使用场景和区别。

  1. addMenu的使用场景:

    • 当你想要在菜单中添加一个子菜单时,使用addMenu是合适的。通过addMenu方法,你可以在当前菜单中创建一个新的子菜单,并返回该子菜单的指针,以便进一步添加菜单项或子菜单。例如:
      QMenu *fileMenu = menuBar->addMenu("File");
      QMenu *editMenu = menuBar->addMenu("Edit");
      
    • 通常情况下,你会使用addMenu在菜单栏(QMenuBar)或其他菜单(QMenu)中添加子菜单。
  2. addAction的使用场景:

    • 当你想要在菜单中添加一个动作(菜单项)时,使用addAction是合适的。通过addAction方法,你可以在当前菜单中添加一个动作,并返回该动作的指针,以便进一步设置动作的属性和信号槽。例如:
      QAction *newAction = fileMenu->addAction("New");
      QAction *openAction = fileMenu->addAction("Open");
      
    • 通常情况下,你会使用addAction在菜单或子菜单中添加动作,以便用户可以执行相应的操作。

总结:

  • addMenu适用于在菜单中添加子菜单。
  • addAction适用于在菜单中添加动作(菜单项)。

根据你的需求和菜单结构,选择合适的函数以在菜单中添加菜单项或子菜单。

3.将QAction的信号连接到槽函数

要将QAction的信号连接到槽函数,你需要使用QObject::connect函数。以下是一个示例代码,展示了如何连接QActiontriggered信号到槽函数:

// 假设你有一个名为 action 的 QAction 对象和一个名为 receiver 的接收者对象// 定义槽函数
void MyReceiver::handleAction()
{// 处理 QAction 的触发事件// ...
}// 在连接信号和槽之前,确保接收者对象 receiver 已经存在// 连接信号和槽
QObject::connect(action, &QAction::triggered, receiver, &MyReceiver::handleAction);

在上面的代码中,MyReceiver是接收者类,其中定义了一个名为handleAction的槽函数。action是要连接的QAction对象,receiver是接收者对象的实例。

QObject::connect函数的第一个参数是发送信号的对象,第二个参数是信号的名称,第三个参数是接收者对象,第四个参数是槽函数的名称。你可以使用&ClassName::slotName语法来指定槽函数。

actiontriggered信号被触发时,与之连接的槽函数handleAction将被调用。你可以在槽函数中执行你想要的操作。

请确保在连接信号和槽之前,接收者对象receiver已经被正确创建和初始化。

在这里插入图片描述

代码

#include <QApplication>
#include <QMainWindow>
#include <QAction>
#include <QObject>
#include <QDebug>
#include <QMenu>
#include <QMenuBar>// 定义接收者类
class MyReceiver : public QObject
{
public slots:void handleAction(){qDebug() << "Action triggered!";}
};int main(int argc, char *argv[])
{QApplication app(argc, argv);// 创建 QMainWindowQMainWindow mainWindow;// 创建 QActionQAction *action = new QAction("My Action", &mainWindow);// 创建接收者对象MyReceiver receiver;// 连接信号和槽QObject::connect(action, &QAction::triggered, &receiver, &MyReceiver::handleAction);// 将 QAction 添加到 QMainWindow 的菜单栏QMenu *menu = mainWindow.menuBar()->addMenu("File");menu->addAction(action);// 显示 QMainWindowmainWindow.show();return app.exec();
}

4.QAction的使用场景

QAction不仅仅适用于菜单中的动作(菜单项),它还可用于其他用户界面元素和交互方式中。

虽然在菜单中添加动作是QAction的常见用法之一,但它也可以用于以下情况:

  1. 工具栏:QAction可以用于在工具栏上添加按钮和其他交互元素。你可以将QAction对象添加到QToolBar中,从而在工具栏上创建可点击的按钮。

  2. 快捷键:QAction可以与快捷键关联,使用户能够通过键盘快捷方式触发操作。通过setShortcut函数,你可以为QAction指定一个键盘组合,例如Ctrl+C或F5。

  3. 上下文菜单:QAction可以与上下文菜单(右键菜单)关联。你可以将QAction添加到QMenu中,并在用户右键单击相关界面元素时显示上下文菜单。

  4. 工具提示和状态栏:QAction可以通过设置工具提示和状态栏消息来提供有关操作的附加信息。用户将鼠标悬停在具有关联QAction的界面元素上时,工具提示将显示相应的文本。状态栏消息将在用户执行操作时显示在状态栏上。

总之,QAction是一个通用的用户交互元素,用于表示用户界面中的操作。它可以用于菜单、工具栏、快捷键、上下文菜单和其他需要与用户交互的地方。

5.将例1修改为不使用QMainWindow,使用QWidget

在这里插入图片描述

代码

#include <QApplication>
#include <QWidget>
#include <QMenuBar>
#include <QMenu>
#include <QAction>int main(int argc, char *argv[]) {QApplication app(argc, argv);QWidget window;QMenuBar *menuBar = new QMenuBar(&window);QMenu *fileMenu = menuBar->addMenu("File");QAction *newAction = fileMenu->addAction("New");QAction *openAction = fileMenu->addAction("Open");QMenu *editMenu = menuBar->addMenu("Edit");QAction *cutAction = editMenu->addAction("Cut");QAction *copyAction = editMenu->addAction("Copy");window.show();return app.exec();
}

6.QMenuBar *menuBar = new QMenuBar(&window); 详解

QMenuBar *menuBar = new QMenuBar(&window); 这行代码的详细解释如下:

  1. QMenuBar 是 Qt 框架中的一个类,用于创建和管理菜单栏(Menu Bar)。

  2. &window 是一个指向 QWidget 对象的指针,表示菜单栏的父对象。在这种情况下,我们将菜单栏设置为窗口的子对象,以便在窗口关闭时自动释放菜单栏内存。

  3. new QMenuBar(&window) 使用 new 运算符进行动态内存分配,创建了一个 QMenuBar 对象。通过传递 &window 作为参数,我们将窗口设置为菜单栏的父对象。

  4. QMenuBar *menuBar 是一个变量声明,它指定了变量的类型为 QMenuBar* 即菜单栏的指针类型。

  5. = 是赋值操作符,用于将 new QMenuBar(&window) 的返回值赋给 menuBar 变量。这样,menuBar 变量就指向了动态分配的菜单栏对象。

通过使用动态内存分配和指定父对象,我们可以确保在窗口关闭时,菜单栏对象会自动被销毁并释放内存。

总之, QMenuBar *menuBar = new QMenuBar(&window); 这行代码的作用是创建一个 QMenuBar 对象,并将其设置为窗口的菜单栏,并将菜单栏的指针存储在 menuBar 变量中,以便后续对菜单栏进行操作。

在这里插入图片描述

http://www.yayakq.cn/news/656871/

相关文章:

  • 自动化设备技术支持东莞网站建设搞好姓氏源流网站建设
  • 国家电网 两学一做 网站大庆seo公司
  • 网站开发和设计人员的岗位要求网站炫酷首页
  • 深圳网站建设联雅网络嘉兴 做网站 推广
  • 在线设计装修的网站百度收录方法
  • 怎么做网站优化湛江网站关键字优化
  • 没有网站可以做seo洛阳网站排名
  • 福建省第一电力建设公司网站手机h5网站开发
  • 英语外贸网站建设更换网站logo
  • 宁波seo建站价格手机如何做车载mp3下载网站
  • wordpress闭站中小企业网络营销现状
  • 如何用php数据库做网站静态网站怎么制作
  • 深度科技商业官方网站网站修改解析怎么做
  • 物价局网站建设情况汇报国外网站购物
  • 百度收录自适应网站网站加速工具
  • 检测网站的seo效果派代网
  • 网站建设 内容缺乏欧美色影网站
  • 慈溪市网站制作网站空间服务商查询
  • 中企动力的网站如何十大技能培训机构排名
  • 网站推广计划效果外包网页制作页面多少钱一张
  • 乐清网站改版公司湛江seo哪家好
  • 怎么增加网站首页权重手机网站 微信链接怎么做
  • 企业没有网站怎么做seo优化找做模型方案去哪个网站
  • 谁可以教我做网站外行学习个人网站建设
  • 为什么我的电脑打开了第一个网站打开第二个网站就网络出问题了?wordpress是
  • win8网站模版汽车技术资料网站建设
  • 网站建设热门吗外贸网站制作设计
  • 珠海免费网站建设如何提交网站给百度
  • asp.net 手机网站开发网页版淘宝
  • 可以接单做3d网站今天上海新闻