Qt控件 UI设计 QPushbutton、QToolButton、QMenu

Qt控件 UI设计 QPushbutton、QToolButton、QMenu

  • 个人设计QToolButton效果
    • 设计效果
    • 运行效果
  • Chapter1 Qt控件 UI设计 QPushbutton、QToolButton、QMenu
    • 1.QPushbutton和QToolButton的关联和区别:
    • 2.QMenu 可以配合QPushbutton做个下拉菜单
    • 3.点击按钮的功能,toolbutton主题是用ui画的,直接转到槽编写想要实现的功能
    • 4.pushbutton是new出来的,实现一个点击弹出messagebox的功能,需要connect信号和槽。
  • Chapter2 Qt之QToolButton
    • 简述
    • 详细描述
    • 常用接口
    • 更多参考
  • Chapter3 QToolButton 使用(很好用)
    • 简介
  • Chapter4 Qt QToolButton和QListWidget的使用


个人设计QToolButton效果

设计效果

在这里插入图片描述

运行效果

在这里插入图片描述

void MainWindow::btnPopMenuInit()
{P_menu = new QMenu(this);P_maincontrol = new QAction(tr("主控"),this);p_wrjzh = new QAction(tr("无人机"),this);p_robot = new QAction(tr("机器人"),this);P_menu->addAction(P_maincontrol);P_menu->addAction(p_wrjzh);P_menu->addAction(p_robot);ui->btn_SetMenu->setMenu(P_menu);connect(P_maincontrol, &QAction::triggered, this, &MainWindow::slot_maincontrol);connect(p_wrjzh, &QAction::triggered, this, &MainWindow::slot_wrjzh);connect(p_robot, &QAction::triggered, this, &MainWindow::slot_robot);connect(this, SIGNAL(sig_maincontrol(QString)), this, SLOT(slot_getSig(QString)));}void MainWindow::slot_maincontrol()
{QMessageBox::information(this, tr("下拉菜单触发提示"), tr("slot_maincontrol菜单信号已触发"));emit sig_maincontrol(tr("信号触发"));
}void MainWindow::slot_wrjzh()
{QMessageBox::information(this, tr("下拉菜单触发提示"), tr("slot_wrjzh菜单信号已触发"));
}void MainWindow::slot_robot()
{QMessageBox::information(this, tr("下拉菜单触发提示"), tr("slot_robot菜单信号已触发"));
}void MainWindow::slot_getSig(QString str)
{qDebug()<<__FUNCTION__<<str;
}
void MainWindow::on_toolButton_3_clicked()
{ui->label_ActionTip->setText(tr("on_toolButton1 clicked"));ui->toolButton_2->show(); //toolButton_2按钮显示
}void MainWindow::on_toolButton_5_clicked()
{ui->label_ActionTip->setText(tr("on_toolButton2 clicked"));ui->toolButton_2->hide(); //toolButton_2按钮隐藏
}

Chapter1 Qt控件 UI设计 QPushbutton、QToolButton、QMenu

原文链接:https://blog.csdn.net/jhonsss/article/details/131290420

toolbutton:多用于工具栏,提供命令或选项,一般不会带文字在按钮上,用来显示图标

类似word种的这样的工具栏。。。
在这里插入图片描述
pushbutton:是普通按钮,可以提供文字,图标都在按钮上。可以设置一定的界面风格等。

toolButton的功能比pushbutton更多一些。

1.QPushbutton和QToolButton的关联和区别:

1.关联:都是按钮,都可以通过信号槽来控制点击事件的触发。

2.区别:toolbutton更特殊一点,可以配置快捷键触发槽,一般只用图片做按钮配置放在toolbar内,就像下图编辑界面的功能选项,用toolbutton就很简单。

在这里插入图片描述

下面是用toolbutton实现的一个按钮,本次选择toolbutton的原因是因为想把文字显示在图标下面很容易实现。

    ui->ToolBtn_one->setGeometry(10,30,100,100);ui->ToolBtn_one->setIcon(QIcon(":/logo/images/1.jpg"));ui->ToolBtn_one->setIconSize(QSize(46,46));ui->ToolBtn_one->setText(QString::fromLocal8Bit("主控载荷"));ui->ToolBtn_one->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);

效果如下:
在这里插入图片描述

2.QMenu 可以配合QPushbutton做个下拉菜单

new一个pushbutton,new一个QMenu,new几个QAction,将action的对象加入menu的对象,

将这个pushbutton对象设置为菜单形式,代码如下:

    QPushButton *P_SetMenuBtn = new QPushButton(this);P_SetMenuBtn->setGeometry(460,30,100,30);P_SetMenuBtn->setText("摇杆选择");P_menu = new QMenu(this);P_maincontrol = new QAction("主控",this);p_wrjzh = new QAction("无人机",this);p_robot = new QAction("机器人",this);P_menu->addAction(P_maincontrol);P_menu->addAction(p_wrjzh);P_menu->addAction(p_robot);P_SetMenuBtn->setMenu(P_menu);

效果如下:
在这里插入图片描述

3.点击按钮的功能,toolbutton主题是用ui画的,直接转到槽编写想要实现的功能

比如我想要实现的是打开一个linux终端:

        ui->ToolBtn_one->setEnabled(false);ui->ToolBtn_two->setEnabled(true);ui->ToolBtn_three->setEnabled(true);QString cmd = "gnome-terminal \n";QProcess start_one;start_one.setProcessChannelMode(QProcess::MergedChannels);start_one.start("bash");start_one.write(cmd.toUtf8());start_one.waitForBytesWritten();start_one.waitForFinished();start_one.closeWriteChannel();QString output = start_one.readAll();qDebug()<<"output"<<output;

4.pushbutton是new出来的,实现一个点击弹出messagebox的功能,需要connect信号和槽。

1.信号和槽:qt的这个功能基本就是对c++回调函数的封装,使用起来比回调函数更方便,但是牺牲一些性能,会更慢一点。connect的参数我是这么理解的:谁,发出什么信号,想让谁,实现什么功能。它也有第五个参数,是信号和槽的连接方式,一般默认缺省。比如信号和槽不在一个线程中,需要事件循环接受信号,那么默认参数就应是Queuedconnection,这里不细说了。

2.此次是实现点击menu下的action后进行一个弹窗功能,代码如下:

connect(P_maincontrol,&QAction::triggered,this,&MainWindow::do_maincontrol);void MainWindow::do_maincontrol()
{QMessageBox::information(this," ","这是主控遥感");emit ZHchaged();
}

Chapter2 Qt之QToolButton

简述

QToolButton类提供了用于命令或选项可以快速访问的按钮,通常可以用在QToolBar里面。

工具按钮和普通的命令按钮不同,通常不显示文本,而显示图标。

详细描述

当使用QToolBar::addAction()添加一个新的(或已存在的)QAction至工具栏时,工具按钮通常被创建 。也可以用同样的方式构建工具按钮和其它部件,并设置它们的布局。

QToolButton支持自动浮起,在自动浮起模式中,只有在鼠标指向它的时候才绘制三维框架。当按钮被用在QToolBar里时,这个特征会被自动启用,可以使用setAutoRaise()来改变。

按钮的外观和尺寸可通过setToolButtonStyle()和setIconSize()来调节。当在QMainWindow的QToolBar里使用时,按钮会自动地调节来适合QMainWindow的设置(见QMainWindow::setToolButtonStyle() 和QMainWindow::setIconSize())。

工具按钮可以提供一个弹出菜单,使用setMenu()来进行设置。通过setPopupMode()来设置菜单的弹出模式,缺省模式是DelayedPopupMode,这个特征有时对于网页浏览器中的“后退”按钮有用,在按下按钮一段时间后,会弹出一个显示所有可以后退浏览的可能页面的菜单列表,默认延迟600毫秒,可以用setPopupDelay()进行调整。

常用接口

  • void setMenu(QMenu * menu)
    设置按钮的弹出菜单。和QPushButton用法类似,详见:Qt之QPushButton

  • void setPopupMode(ToolButtonPopupMode mode)
    设置弹出菜单的方式,默认情况下,设置为DelayedPopup(延迟弹出)。

枚举QToolButton::ToolButtonPopupMode:

在这里插入图片描述

  • void setToolButtonStyle(Qt::ToolButtonStyle style)
    设置按钮风格,只显示一个图标,文本或文本位于图标旁边、下方。默认值是Qt::ToolButtonIconOnly。

枚举Qt::ToolButtonStyle:
在这里插入图片描述

  • void setArrowType(Qt::ArrowType type)
    设置按钮是否显示一个箭头,而不是一个正常的图标。这将显示一个箭头作为QToolButton的图标。
    默认情况下,这个属性被设置为Qt::NoArrow。

枚举Qt::ArrowType:
在这里插入图片描述
效果:
在这里插入图片描述

QToolButton *pButton = new QToolButton(this);
pButton->setArrowType(Qt::LeftArrow);
pButton->setText("Left Arrow");
// 文本位于图标之下
pButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
pButton->setStyleSheet("QToolButton{border: none; background: rgb(68, 69, 73); color: rgb(0, 160, 230);}");

这里,我们可以通过样式表color来设置图标的颜色及文本色。

  • void setDefaultAction(QAction * action)
    设置默认的QAction,如果有一个默认的action,该action则会定义QToolButton的文本、图标、TooTip等按钮的属性。
    在这里插入图片描述
QAction *pAction = new QAction(this);
pAction->setText(QString::fromLocal8Bit("一去丶二三里"));
pAction->setIcon(QIcon(":/Images/logo"));
pButton->setIconSize(QSize(48, 48));
pAction->setToolTip(QString::fromLocal8Bit("青春不老,奋斗不止!"));
pButton->setDefaultAction(pAction);
pButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);

更多参考

Qt之QAbstractButton

Qt之QPushButton

Qt之QCheckBox

Qt之QRadioButton
在这里插入图片描述

Chapter3 QToolButton 使用(很好用)

原文链接:https://blog.csdn.net/kangkanglhb88008/article/details/127119094

简介

QToolButton 是继承了 QPushButton(而QPushButton是继承自QAsractButton),所以它具有 QPushButton的所有属性,成员,和方法。从设计界面可以看出,属性设置的 QToolButton 独有的仅仅如下4项:
在这里插入图片描述
相比于QPushButton 独有的特性介绍

  1. PopupMode
    //默认情况下 菜单是有个延时才会弹出来的.
    setPopupMode(QToolButton::ToolButtonPopupMode) 设置菜单弹出模式

参数为枚举值如下:

QToolButton::DelayedPopup    //默认值 延时弹出QToolButton::MenuButtonPopup  //该模式下,点击按钮上的小箭头会立即弹出菜单.但点击区域仅限于小箭头区域QToolButton::InstantPopup //覆盖按钮自身的触发.点击按钮即弹出菜单
  1. ToolButtonStyle
    有几种显示风格
ui->toolButton->setToolButtonStyle(Qt::ToolButtonTextOnly);
Qt::ToolButtonIconOnly        仅显示图标
Qt::ToolButtonTextOnly        仅显示文本
Qt::ToolButtonTextBesideIcon     文本显示在图标旁边
Qt::ToolButtonTextUnderIcon      文本显示在图标下边
Qt::ToolButtonFollowStyle       遵循QStyle::StyleHint
  1. autoRaise
    这个可以实现扁平化效果,鼠标悬浮会有效果,不错的,可以多用。
ui->toolButton->setAutoRaise(true); 当设置该项时,按钮的边框会被掩藏。
  1. arrowType
    有3态
    按钮箭头的几种显示
setArrowType(Qt::ArrowType type)   默认值为无箭头Qt::NoArrow 无箭头Qt::UpArrow 向上的箭头Qt::DownArrow 向下的箭头Qt::LeftArrow 向左的箭头Qt::RightArrow 向右的箭头

箭头和图标显示是二选一的

  1. 多一个trigered(QAction*)信号
    这个就是实现弹出菜单,然后咱们点击了哪一项action,发射的信号。注:这个aciton就是我们在界面上可以创建的那种action,这样确实简单好用了。我觉得这是容易理解,直观的方式了。也有些人是通过代码,为按钮添加action,action又设置一个listview作为widget,每个listview又包含了多个项(每个项就是一个action),我觉得这样反而搞复杂了,不直观,不容易理解。

在这里插入图片描述
按钮的菜单使用

QMenu* menu = new QMenu();
menu->addAction("1");
menu->addAction("2");
menu->addAction("3");
ui->toolButton->setMenu(menu);
connect(ui->toolButton, &QToolButton::triggered, [&](QAction * act)
{qDebug() << act>text();
});

设置按钮默认QAction

QAction *action = new QAction(this);
action->setText(u8"action");
action->setToolTip(u8"这是一个action");
action->setDefaultAction(pAction);

其他跟QPushButton一样了。所以,多用这个QToolButton挺好的。

Chapter4 Qt QToolButton和QListWidget的使用

原文链接
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

k8s:endpoint

在 Kubernetes 中&#xff0c;Endpoint 是一种 API 对象&#xff0c;它用于表示集群内某个 Service 的具体网络地址。换句话说&#xff0c;它连接到一组由 Service 选择的 Pod&#xff0c;从而使它们能够提供服务。每个 Endpoint 对象都与相应的 Service 对象具有相同的名称&am…

【C语言初学者周冲刺计划】5.1C语言知识点小总结

目录 1知识点一&#xff1a; 2知识点二&#xff1a; 3知识点三&#xff1a; 4代码&#xff1a; 5总结&#xff1a; 1知识点一&#xff1a; 1 C语言中要求对变量作强制定义的主要理由是( )。 便于确定类型和分配空间 2 【单选题】若有定义&#xff1a;int m7; float x…

云安全-云原生k8s攻击点(8080,6443,10250未授权攻击点)

0x00 k8s简介 k8s&#xff08;Kubernetes&#xff09; 是容器管理平台&#xff0c;用来管理容器化的应用&#xff0c;提供快速的容器调度、弹性伸缩等诸多功能&#xff0c;可以理解为容器云&#xff0c;不涉及到业务层面的开发。只要你的应用可以实现容器化&#xff0c;就可以部…

Webpack搭建本地服务器

一、搭建webpack本地服务 1.为什么要搭建本地服务器&#xff1f; 目前我们开发的代码&#xff0c;为了运行需要有两个操作&#xff1a; 操作一&#xff1a;npm run build&#xff0c;编译相关的代码&#xff1b;操作二&#xff1a;通过live server或者直接通过浏览器&#x…

Leetcode刷题详解——反转链表

1. 题目链接&#xff1a;206. 反转链表 2. 题目描述&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1…

炫云客户端信用额度如何修改?

现在炫云新注册用户信用额度是100元&#xff0c;但是有人觉得信用额度太高了&#xff0c;想修改信用额度&#xff0c;不知道炫云的信用额度如何修改&#xff0c;今天就教大家如何修改炫云的信用额度。炫云的信用额度在炫云官网和客户端都可以修改。 我们先来看炫云官网如何修改…

【数据结构】归并排序 的递归实现与非递归实现

归并排序 前言一、归并排序递归实现&#xff08;1&#xff09;归并排序的核心思路&#xff08;2&#xff09;归并排序实现的核心步骤&#xff08;3&#xff09;归并排序码源详解&#xff08;4&#xff09;归并排序效率分析1&#xff09;时间复杂度 O&#xff08;N*logN&#xf…

matlab双目标定中基线物理长度获取

在MATLAB进行双目摄像机标定时,通常会获得相机的内参,其中包括像素单位的焦距(focal length)以及物理单位的基线长度(baseline)。对于应用中的深度估计和测量,基线长度的物理单位非常重要,因为它直接影响到深度信息的准确性。有时候,您可能只能获取像素单位的焦距和棋…

FPGA 如何 固化程序到 FLASH中

1、导出Hardware 2、导出bit文件 3、打开SDK 4、 点击Ok 5、创建工程 6、 输入工程名称&#xff1a;guhua 7、选择 Zynq FSBL 8、单击 guhua、然后点击 build 点击&#xff1a;build all 9、 右键之后&#xff0c;点击&#xff1a;Creat Boot Image 10、点击 Cr…

水库大坝可视化智能远程监管方案,助力安全监测智能巡检

一、背景需求 水库大坝作为防洪度汛的重要设施&#xff0c;其安全问题直接关系到人民群众的生命财产安全。因此&#xff0c;必须加强对大坝水库的安全管理&#xff0c;对水库除险加固和运行管护要消除存量隐患&#xff0c;实现常态化管理&#xff0c;同时要配套完善重点小型水…

Leetcode—485.最大连续1的个数【简单】

2023每日刷题&#xff08;十五&#xff09; Leetcode—485.最大连续1的个数 实现代码 int findMaxConsecutiveOnes(int* nums, int numsSize){int max 0;int i;int flag 0;int cnt 0;for(i 0; i < numsSize; i) {if(nums[i] 1) {if(flag 0) {flag 1;cnt 1;} else {…

ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南续篇

作者&#xff1a;运维有术 前言 知识点 定级&#xff1a;入门级KubeKey 安装部署 ARM 版 KubeSphere 和 KubernetesARM 版 KubeSphere 和 Kubernetes 常见问题 实战服务器配置 (个人云上测试服务器) 主机名IPCPU内存系统盘数据盘用途ks-master-1172.16.33.1661650200KubeSp…

3D人像手办定制业务再掀热潮,这一次有怎样的革新?(方法篇)

最近&#xff0c;3D真人手办热潮再起&#xff0c;最出圈的一次当属亚运会的3D打印元宇宙体验舱里面各国运动员带火的真人手办定制项目。作为3D技术推广者&#xff0c;博雅仔也在后台接受了很多朋友的询问—— ◆ 技术已经成熟了吗&#xff1f; ◆ 个人定做3D真人手办市场价格…

百度百科怎么创建?百科创建需要注意哪些(一文看懂品牌/企业/人物百科创建)

随着互联网的不断发展&#xff0c;许多企业或品牌都选择创建百度百科作为一种很好的展示方式。百度百科可以被视为一张网络名片&#xff0c;拥有它能够提高人物、企业、品牌的知名度和影响力。那么人物百科、企业百科、品牌百科到底怎么创建呢&#xff1f; 大家创建百科前建议先…

3.4_Linux-浏览文件系统

1.Linux 文件系统 如果你刚接触Linux系统&#xff0c;可能就很难弄清楚Linux如何引用文件和目录&#xff0c;对已经习惯Microsoft Windows操作系统方式的人来说更是如此。在继续探索Linux系统之前&#xff0c;先了解一下它的布局是有好处的。 你将注意到的第一个不同点是&…

玻色量子“天工量子大脑”亮相中关村论坛,大放异彩

2023年5月25日至30日&#xff0c;2023中关村论坛&#xff08;科博会&#xff09;在北京盛大召开。中关村论坛&#xff08;科博会&#xff09;是面向全球科技创新交流合作的国家级平台行业盛会&#xff0c;由科技部、国家发展改革委、工业和信息化部、国务院国资委、中国科学院、…

数据结构——顺序表(SeqList)

目录 1. 顺序表介绍 2. 顺序表工程 2.1 顺序表定义 2.1.1 静态顺序表 2.1.2 动态顺序表 2.2顺序表接口 2.2.1 顺序表初始化 2.2.2 顺序表打印 2.2.3 顺序表销毁 2.2.4 顺序表数据插入 2.2.4.1 容量检查 2.2.4.2 顺序表尾插 2.2.4.3 顺序表头插 2.2.4.4 顺序表随机…

人工智能与卫星:颠覆性技术融合开启太空新时代

人工智能与卫星&#xff1a;颠覆性技术融合开启太空新时代 摘要&#xff1a;本文将探讨人工智能与卫星技术的融合&#xff0c;并介绍其应用、发展和挑战。通过深入了解这一领域的前沿动态&#xff0c;我们将展望一个由智能卫星驱动的未来太空时代。 一、引言 近年来&#xf…

lazada商品评论API接口(评论内容|日期|买家昵称|追评内容|评论图片|评论视频..)

Lazada商品评论API接口是Lazada开放平台提供的一种API接口&#xff0c;可以帮助开发者获取Lazada平台上的商品评论数据。 通过该接口&#xff0c;开发者可以获取到用户对商品的评论信息&#xff0c;包括评论内容、评价等级、评论时间等&#xff0c;从而了解用户对商品的反馈和…

微信小程序overflow-x超出部分样式不渲染

把display:flex改成display:inline-flex&#xff0c; 将对象作为内联块级弹性伸缩盒显示&#xff0c; 类似与是子元素将父元素撑开&#xff0c;样式就显示出来了