我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C/C++ Qt ToolBar菜单组件的具体使用是怎样的

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C/C++ Qt ToolBar菜单组件的具体使用是怎样的

C/C++ Qt ToolBar菜单组件的具体使用是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

ToolBar工具栏在所有窗体应用程序中都广泛被使用,使用ToolBar可以很好的规范菜单功能分类,用户可根据菜单栏来选择不同的功能,Qt中默认自带ToolBar组件,当我们以默认方式创建窗体时,ToolBar就被加入到了窗体中,一般是以QToolBar的方式存在于对象菜单栏,如下所示。

C/C++ Qt ToolBar菜单组件的具体使用是怎样的

QToolBar组件在开发中我遇到了以下这些功能,基本上可以应对大部分开发需求了,这里就做一个总结。

顶部工具栏ToolBar组件的定义有多种方式,我们可以直接通过代码生成,也可以使用图形界面UI拖拽实现,但使用代码时间则更加灵活一些,ToolBar组件可以表现出多种形态.

首先来看一个简单的生成案例,如下代码中我们通过属性setAllowedAreas()可以实现将ToolBar组件放置到上下左右四个不同的方位上面.

#include "mainwindow.h"#include "ui_mainwindow.h"#include <iostream>#include <QMenuBar>#include <QToolBar>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){    ui->setupUi(this);// ----------------------------------------------------------// 创建菜单栏    QMenuBar *bar = menuBar();    this->setMenuBar(bar);                      // 将菜单栏放入主窗口    QMenu * fileMenu = bar->addMenu("文件");     // 创建父节点    // 添加子菜单    QAction *newAction = fileMenu->addAction("新建文件");     // 设置名字    //newAction->setIcon(QIcon("://image/1.ico"));           // 设置可用图标    fileMenu->addSeparator();                                // 添加分割线    QAction *openAction = fileMenu->addAction("打开文件");     // 设置名字    //openAction->setIcon(QIcon("://image/2.ico"));          // 设置可用图标// ----------------------------------------------------------//创建工具栏    QToolBar *toolBar = new QToolBar(this);  // 创建工具栏    addToolBar(Qt::LeftToolBarArea,toolBar); // 设置默认停靠范围 [默认停靠左侧]    toolBar->setAllowedAreas(Qt::TopToolBarArea |Qt::BottomToolBarArea);   // 允许上下拖动    toolBar->setAllowedAreas(Qt::LeftToolBarArea |Qt::RightToolBarArea);   // 允许左右拖动    toolBar->setFloatable(false);       // 设置是否浮动    toolBar->setMovable(false);         // 设置工具栏不允许移动    // 工具栏添加菜单项    toolBar->addAction(newAction);    toolBar->addSeparator();    toolBar->addAction(openAction);// By : LyShark// https://www.cnblogs.com/lyshark// ----------------------------------------------------------// 绑定槽函数    connect(newAction,&QAction::triggered,this,[=](){        std::cout << "new action" << std::endl;    });    connect(openAction,&QAction::triggered,this,[=](){        std::cout << "open action" << std::endl;    });}MainWindow::~MainWindow(){    delete ui;}

C/C++ Qt ToolBar菜单组件的具体使用是怎样的

接着通过代码的方式实现一个顶部菜单栏,该菜单栏中可以通过SetIcon(QIcon("://image/1.ico"));指定图标,也可以使用setShortcut(Qt::CTRL | Qt::Key_C);为其指定特殊的快捷键。

#include "mainwindow.h"#include "ui_mainwindow.h"#include <iostream>#include <QMenuBar>#include <QToolBar>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){    ui->setupUi(this);// ----------------------------------------------------------// 创建菜单栏    QMenuBar *bar = menuBar();    this->setMenuBar(bar);  //将菜单栏放入主窗口    QMenu * fileMenu = bar->addMenu("文件");// By : LyShark// https://www.cnblogs.com/lyshark    // 添加子菜单    QAction *newAction = fileMenu->addAction("新建文件");      // 添加名字    newAction->setIcon(QIcon(":/image/1.ico"));              // 设置ICO图标    newAction->setShortcut(Qt::CTRL | Qt::Key_A);            // 设置快捷键ctrl+a    fileMenu->addSeparator();                                // 添加分割线    QAction *openAction = fileMenu->addAction("打开文件");    openAction->setIcon(QIcon(":/image/2.ico"));    openAction->setShortcut(Qt::CTRL | Qt::Key_C);          // 设置快捷键ctrl+c// ----------------------------------------------------------// 创建工具栏(可屏蔽掉,屏蔽掉后底部将失去控件栏位)    QToolBar *toolBar = new QToolBar(this);       // 创建工具栏    addToolBar(Qt::BottomToolBarArea,toolBar);    // 设置默认停靠范围(停靠在底部)    toolBar->setFloatable(false);                 // 设置是否浮动为假    toolBar->setMovable(false);                   // 设置工具栏不允许移动    // 工具栏添加菜单项    toolBar->addAction(newAction);               // 工具栏添加[新建文件]    toolBar->addSeparator();                     // 添加分割线    toolBar->addAction(openAction);              // 添加[打开文件]// ----------------------------------------------------------// 绑定信号和槽   connect(newAction,&QAction::triggered,this,[=](){       std::cout << "new file slot" << std::endl;   });   connect(openAction,&QAction::triggered,this,[=](){       std::cout << "open file slot" << std::endl;   });}MainWindow::~MainWindow(){    delete ui;}

C/C++ Qt ToolBar菜单组件的具体使用是怎样的

实现顶部菜单栏二级菜单,二级顶部菜单与一级菜单完全一致,只是在一级菜单的基础上进行了延申,如下代码则是定义了一个二级菜单。

#include "mainwindow.h"#include "ui_mainwindow.h"#include <iostream>#include <QMenuBar>#include <QToolBar>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){    ui->setupUi(this);// ----------------------------------------------------------// 多层菜单导航栏       QMenuBar *MainMenu = new QMenuBar(this);       this->setMenuBar(MainMenu);       // 1.定义父级菜单       QMenu *EditMenu = MainMenu->addMenu("编辑");       // 1.1 定义 EditMemu 下面的子菜单       QAction *text = new QAction(EditMenu);       text->setText("编辑文件");                     // 设置文本内容       text->setShortcut(Qt::CTRL | Qt::Key_A);      // 设置快捷键ctrl+a       text->setIcon(QIcon(":/image/1.ico"));        // 增加图标       EditMenu->addAction(text);       EditMenu->addSeparator();                      // 在配置模式与编辑文件之间增加虚线       QAction *option = new QAction(EditMenu);       option->setText("配置模式");       option->setIcon(QIcon(":/image/2.ico"));       EditMenu->addAction(option);       // 1.1.2 定义Option配置模式下的子菜单       QMenu *childMenu = new QMenu();       QAction *set_file = new QAction(childMenu);       set_file->setText("设置文件内容");       set_file->setIcon(QIcon(":/image/3.ico"));       childMenu->addAction(set_file);       QAction *read_file = new QAction(childMenu);       read_file->setText("读取文件内容");       read_file->setIcon(QIcon(":/image/2.ico"));       childMenu->addAction(read_file);// ----------------------------------------------------------// 注册菜单到窗体中// By : LyShark// https://www.cnblogs.com/lyshark       // 首先将childMenu注册到option中       option->setMenu(childMenu);       // 然后再将childMenu加入到EditMenu中       EditMenu->addMenu(childMenu);// ----------------------------------------------------------// 绑定信号和槽       connect(text,&QAction::triggered,this,[=](){           std::cout << "edit file slot" << std::endl;       });       connect(set_file,&QAction::triggered,this,[=](){           std::cout << "set file slot" << std::endl;       });       connect(read_file,&QAction::triggered,this,[=](){          std::cout << "read file slot" << std::endl;       });}MainWindow::~MainWindow(){    delete ui;}

C/C++ Qt ToolBar菜单组件的具体使用是怎样的

Qt中的菜单还可以实现任意位置的弹出,例如我们可以将右击customContextMenuRequested()事件,绑定到主窗口中,实现在窗体任意位置右击都可以弹出菜单栏,代码如下。

#include "mainwindow.h"#include "ui_mainwindow.h"#include <QMenuBar>#include <iostream>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){    ui->setupUi(this);    this->setContextMenuPolicy(Qt::CustomContextMenu);}MainWindow::~MainWindow(){    delete ui;}// 在主界面右击->转到customContextMenuRequested槽// By : LyShark// https://www.cnblogs.com/lysharkvoid MainWindow::on_MainWindow_customContextMenuRequested(const QPoint &pos){    // 创建菜单对象    QMenu *pMenu = new QMenu(this);    QAction *pNewTask = new QAction(tr("新建"), this);    QAction *pEditTask = new QAction(tr("编辑"), this);    QAction *pDeleteTask = new QAction(tr("删除"), this);    // 设置属性值编号: 1=>新建 2=>设置 3=>删除    pNewTask->setData(1);    pEditTask->setData(2);    pDeleteTask ->setData(3);    // 把QAction对象添加到菜单上    pMenu->addAction(pNewTask);    pMenu->addAction(pEditTask);    pMenu->addAction(pDeleteTask);    // 增加图标    pNewTask->setIcon(QIcon(":/image/1.ico"));    pEditTask->setIcon(QIcon(":/image/2.ico"));    pDeleteTask->setIcon(QIcon(":/image/3.ico"));    // 连接鼠标右键点击信号    connect(pNewTask, SIGNAL(triggered()), this, SLOT(onTaskBoxContextMenuEvent()));    connect(pEditTask, SIGNAL(triggered()), this, SLOT(onTaskBoxContextMenuEvent()));    connect(pDeleteTask, SIGNAL(triggered()), SLOT(onTaskBoxContextMenuEvent()));    // 在鼠标右键点击的地方显示菜单    pMenu->exec(QCursor::pos());    //释放内存    QList<QAction*> list = pMenu->actions();    foreach (QAction* pAction, list) delete pAction;    delete pMenu;}// 处理发送过来的信号void MainWindow::onTaskBoxContextMenuEvent(){    // this->sender()就是信号发送者 QAction    QAction *pEven = qobject_cast<QAction *>(this->sender());    // 获取编号: 1=>新建 2=>设置 3=>删除    int iType = pEven->data().toInt();    switch (iType)    {    case 1:        std::cout << "新建任务" << std::endl;        break;    case 2:        std::cout << "设置任务" << std::endl;        break;    case 3:        std::cout << "删除任务" << std::endl;        break;    default:        break;    }}

C/C++ Qt ToolBar菜单组件的具体使用是怎样的

还可以将顶部的菜单通过bar->setVisible(false);属性将其隐藏起来,对外只展示出一个ToolBar控件栏位,ToolBar控件栏中只保留ICO图标与底部文字描述,这样能显得更加清爽一些。

#include "mainwindow.h"#include "ui_mainwindow.h"#include <QMenuBar>#include <QToolBar>#include <iostream>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){    ui->setupUi(this);// ----------------------------------------------------------    // 隐藏菜单栏上的右击菜单    this->setContextMenuPolicy(Qt::NoContextMenu);    // 创建基础顶部菜单并让其隐藏    QMenuBar *bar = menuBar();    this->setMenuBar(bar);    QMenu * fileMenu = bar->addMenu("Ptr");    bar->setVisible(false);                 // 隐藏菜单    // 添加子菜单    QAction *NewAction = fileMenu->addAction("新建文件");    QAction *OpenAction = fileMenu->addAction("打开文件");    QAction *ReadAction = fileMenu->addAction("读入文件");    // 分别设置图标    NewAction->setIcon(QIcon(":/image/1.ico"));    OpenAction->setIcon(QIcon(":/image/2.ico"));    ReadAction->setIcon(QIcon(":/image/3.ico"));    // 创建工具栏    QToolBar *toolBar = new QToolBar(this);    addToolBar(Qt::TopToolBarArea,toolBar);    // 将菜单项依次添加到工具栏    toolBar->addAction(NewAction);    toolBar->addAction(OpenAction);    toolBar->addAction(ReadAction);    // 设置禁止移动属性,工具栏默认贴在上方    toolBar->setFloatable(false);    toolBar->setMovable(false);    toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);// ----------------------------------------------------------// 绑定槽函数// By : LyShark// https://www.cnblogs.com/lyshark    connect(NewAction,&QAction::triggered,this,[=](){        std::cout << "new action" << std::endl;    });    connect(OpenAction,&QAction::triggered,this,[=](){        std::cout << "open action" << std::endl;    });    connect(ReadAction,&QAction::triggered,this,[=](){        std::cout << "read action" << std::endl;    });}MainWindow::~MainWindow(){    delete ui;}

C/C++ Qt ToolBar菜单组件的具体使用是怎样的

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C/C++ Qt ToolBar菜单组件的具体使用是怎样的

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C/C++ Qt ToolBar菜单组件的具体使用是怎样的

C/C++ Qt ToolBar菜单组件的具体使用是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。ToolBar工具栏在所有窗体应用程序中都广泛被使用,使
2023-06-21

C/C++ Qt QThread线程组件的具体使用是怎样的

这期内容当中小编将会给大家带来有关C/C++ Qt QThread线程组件的具体使用是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。QThread库是QT中提供的跨平台多线程实现方案,使用时需要继承
2023-06-21

C/C++ Qt QChart绘图组件的具体使用是怎么样的

这篇文章给大家介绍C/C++ Qt QChart绘图组件的具体使用是怎么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。QtCharts 组件是QT中提供图表绘制的模块,该模块可以方便的绘制常规图形,Qtcharts
2023-06-21

C++的Qt MdiArea多窗体组件怎么使用

本篇内容主要讲解“C++的Qt MdiArea多窗体组件怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++的Qt MdiArea多窗体组件怎么使用”吧!MDI窗体控件类似于画布,该控件
2023-06-21

怎么使用C/C++ QT的QChart绘制组件

本篇内容主要讲解“怎么使用C/C++ QT的QChart绘制组件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用C/C++ QT的QChart绘制组件”吧!QtCharts 组件是QT中提
2023-06-25

在Visual中C#是怎么使用COM组件的

这篇文章主要讲解了“在Visual中C#是怎么使用COM组件的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在Visual中C#是怎么使用COM组件的”吧!Visual C#是微软推出的新一
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录