首页 > 编程知识 正文

qttabbar使用教程,qeventloop用法

时间:2023-05-06 14:29:16 阅读:17231 作者:379

这里简要介绍了什么是QMenuBar、QMenu和QAction。 本文不介绍其详细功能。 还不认识的人,请参阅Qt的帮助手册或其他相关博客。 如下图所示,软件的蓝色条是QMenuBar用于装载QMenu的。 红色条中的“文件、编辑、构建……”是QMenu,每个QMenu展开的粉红色框中可以看到的都是QAction,单击粉红色框,可以看到绑定到相应QAction的插槽函数

在此插入图像说明

他们的关系在框图上大致是这样的。 (允许的绘画水平)。 一个QMenuBar可以有多个QMenu,一个QMenu可以有多个QAction,每个QAction都可以对应多个类成员函数。 (图中只画了与一个函数对应的情况。

在此插入图像说明

ok,简单的介绍到此结束。 现在进入正文。 QMenuBar易于使用,但存在一定的缺陷,不能像Map、Vector、List等容器那样查找并返回自己的“子节点”。 写这篇文章的目的首先是为了解决QMenuBar没有正确地确定任一个QMenu或QAction的函数接口; 第二,做笔记。 我害怕自己会忘记。 别多嘴,直接贴代码。

1、码键片段#

头文件uart_tools_mainwindow.h中QMenuBar的重要部分代码。

//uart_tools_mainwindow.h

class uart_tools_mainwindow;

类型定义结构{

q动作*动作_ p;

QString name;

void (UART _ tools _ main window :3360 * func );

}main_menu_action;

类型定义结构{

QMenu * menu_p;

QString menu_name;

list main _ menu _ action actions _ list;

}main_menu;

class UART _ tools _ main window : publicqwidget

{

Q_OBJECT

.

.

.

隐私:

//------------- member

//Menu bar

QMenuBar * mainwindow_menubar;

list main _ menu min window _ menu _ list;

//------------- functions

voidshow_connect_window(void );

voidconnect_C0_reconnect(void );

voidconnect_C0_disconnect(void;

(;

源文件uart_tools_mainwindow.cpp中有关QMenuBar的重要部分代码。

this-main window _ menubar=newq menubar (;

this-main window _ menubar-setparent (this;

main_menu tmp_menu; main_menu_action tmp_action; tmp_menu.menu_name='Connect '; tmp _ menu.menu _ p=this-main window _ menubar-addmenu (tmp _ menu.menu _ name ); tmp_action.name='Serial '; tmp _ action.action _ p=tmp _ menu.menu _ p-addaction (tmp _ action.name ); tmp _ action.func=UART _ tools _ main window :3360 show _ connect _ window; tmp _ menu.actions _ list.insert (tmp _ menu.actions _ list.length () 1,tmp_action ); tmp_action.name='Reconnect '; tmp _ action.action _ p=tmp _ menu.menu _ p-addaction (tmp _ action.name ); tmp _ action.func=UART _ tools _ main window 33603360 connect _ c0 _ reconnect; tmp _ menu.actions _ list.insert (tmp _ menu.actions _ list.length () 1,tmp_action ); tmp_action.name='Disconnect '; tmp _ action.action _ p=tmp _ menu.menu _ p-addaction (tmp _ action.name ); tmp _ action.func=UART _ tools _ main window 33603360 connect _ c0 _ disconnect; tmp _ menu.actions _ list.insert (tmp _ menu.actions _ list.length () 1,tmp_action ); this-main window _ menu _ list.insert (this-main window _ menu _ list.length () 1,tmp_menu ); this-main window _ menubar-add separator (; //Easy to connect signal and slot

for (qlistmain _ menu :3360 iterator menu _ I=this-main window _ menu _ list.begin ); menu _ I this-main window _ menu _ list.end (; menu_i

if () menu_p ).menu_p )

for(intaction_I=0; action_I(*menu_I ).actions_list.size ); action_I({ ()

if () menu_I ).actions_list.at ) action_I ).func ) {

qobject:3360connect (() *menu_i ).actions_list.at ) action_p ).action_p ),qaction33603360triggerer

}

}

}

}

//endofeasytoconnectsignalandslot

//setmenubarandmenubackgroundcolorthis-main window _ menubar-set style sheet (qmenubar.item ) background-color 3360 } () ); this-mainwindow_menubar-show (; 2、运行结果展示#

该软件本身实现了串行端口连接的功能。 这意味着通过串行端口连接到目标板,进入shell命令行,然后使用shell命令进行操作。

在此插入图像说明

作者: Imagine Miracle

来源: https://www.cn blogs.com/imagine miracle-wxn/p/Qt _ qmenubar _ im _ shell.html

版权:使用“签名-非商业使用-以相同方式使用4.0国际”许可协议许可本作品。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。