QToolButton

简介

根据QT官方帮助文档的翻译,QToolButton是一个特殊的按钮,提供对特定命令或选项的快速访问;QToolButton能够插入默认的action、能够插入menu、能够设置图标、设置文字;

他主要的属性有:

  1. arrowType : Qt::ArrowType

  2. autoRaise : bool

  3. popupMode: ToolButtonPopupMode

  4. toolButtonStyle : Qt::ToolButtonStyle

1. arrowType

这个属性是设置QToolButton是否显示箭头图标,而非正常的图标;这个属性默认是Qt::NoArrow,也就是不显示箭头。
如果需要设置这个属性,需要调用setArrowType,来指定需要设置的是哪一个样式。

 void setArrowType(Qt::ArrowType type);
  1. downArraw

  2. upArrow

  3. leftArrow

  4. rightArrow

说到这个属性,就不得不提一句另外一个属性: toolButtonStyle,这个属性,标志了QToolButton要以一种什么样子的形式去显示图标和文字。

2. autoRaise

这个属性,从字面上翻译下来是自动抬起,但是具体没有感觉到点在哪里。这个属性默认是false的,但是具体所代表的意思,暂时不太清楚。
调用setAutoRaise来设置这个属性,函数原型如下,函数原型如下:

void setAutoRaise(bool enable);

下图是设置为true的效果:

3. popupMode

这个属性主要是设置QToolButton中的内部拓展,主要是更换一下menu的触发方式;

调用setPopupMode来设置这个属性,函数原型如下:

button->setPopupMode(QToolButton::mode);

这个属性同样也有三个:

  1. DelayedPopup
    这个模式为延迟展开,也就是说要长按左键,一段时间后才会展开菜单。

  2. MenuButtonPopup
    这个模式是单独拉出一个部分,用于点击展开菜单。

  3. InstantPopup
    设置这个展开模式之后,点击按钮,会立即展开菜单,同时,你默认添加的action将不会被触发,这和前两个不同,前两个都会触发默认添加的action。

4. toolButtonStyle

这个属性设置了QToolButton的显示风格,上面的设置箭头就和这个属性息息相关。

默认是ToolButtonIconOnly,调用setToolButtonStyle来设置这个属性,函数原型如下:

    void setToolButtonStyle(Qt::ToolButtonStyle style);

各个属性的实际效果为:

  1. ToolButtonIconOnly
    设置只显示图标;

  2. ToolButtonTextOnly
    设置只显示文字;

  3. ToolButtonTextBesideIcon
    设置文字显示在图标的旁边

  4. ToolButtonTextUnderIcon
    设置文字显示在图标下面

  5. ToolButtonFollowStyle
    图标和文字显示跟随Style

注意

我在使用QToolButton的时候,遇到了一个问题,那就是:
调用了setDefaultAction之后,之前设置的按钮上的文字,就消失不见了,后面我找到了原因,那就是你设置了默认的action之后,如果你要显示文字,你就要将文字设置给你的默认的action,也就是这样:

QAction action = new QAction(this);
action->setText("测试文字"); toolButton->setDefaultAction(action);

只有这样,才能够设置文字显示。

信号的连接

这个按钮的信号和槽基本和其他按钮差不多,但是有一个信号:

void triggred(QAction *action);

这个是当某个action触发时,发射的信号,可以根据这个信号,来实现对应的细节。

样式表的设计

这个的样式表,也基本和其他按钮差不多。

[Qt 基础-02] QToolButton的更多相关文章

  1. 基于C/S架构的3D对战网络游戏C++框架 _04客户端详细设计与OpenGL、Qt基础

    本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...

  2. javascript基础02

    javascript基础02 1.数据类型 数据类型的描述在上篇的扩展中有写到链接 由于ECMAScript数据类型具有动态性,因此的确没有再定义其他数据类型的必要.这句话很重要. 如果以后再数据类型 ...

  3. javaSE基础02

    javaSE基础02 一.javac命令和java命令做什么事情? javac:负责编译,当执行javac时,会启动java的编译程序,对指定扩展名的.java文件进行编译,生成了jvm可以识别的字节 ...

  4. java基础学习05(面向对象基础02)

    面向对象基础02 实现的目标 1.String类的使用2.掌握this关键字的使用3.掌握static关键字的使用4.了解内部类 String类 实例化String对象一个字符串就是一个String类 ...

  5. 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用

    085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...

  6. 084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字

    084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字 本文知识点:构造方法-this关键字 说明:因为时间紧 ...

  7. 083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法

    083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法 本文知识点:构造方法-带参构造方法 说明:因为时间紧张, ...

  8. 082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法

    082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法 本文知识点:构造方法-无参构造方法 说明:因为时间紧张, ...

  9. day32-线程基础02

    线程基础02 3.继承Thread和实现Runnable的区别 从java的设计来看,通过继承Thread或者实现Runnable接口本身来创建线程本质上没有区别,从jdk帮助文档我们可以看到Thre ...

  10. 小白之Python-基础中的基础02

    Python-基础中的基础02 继续整理笔记,反复练习!fighting! -----------------华丽的分界线-------------变量:第一次出现叫做定义变量,再次出现为为该变量赋值 ...

随机推荐

  1. 安装Spring源码时报错No such property: values for class: org.gradle.api.internal.tasks.DefaultTas

    IDEA进行项目拉取时:No such property: values for class: org.gradle.api.internal.tasks.DefaultTas 修改spring-be ...

  2. Qt编写的项目作品10-本地摄像头综合应用示例

    一.功能特点 同时支持 QCamera.ffmpeg.v4l2 三种内核解析本地摄像头. 提供函数 findCamera 自动搜索环境中的所有本地摄像头设备,搜索结果信号发出. 支持自动搜索和指定设备 ...

  3. Qt开源作品10-代码统计组件

    一.前言 代码行数统计主要用来统计项目中的所有文件的代码行数,其中包括空行.注释行.代码行,可以指定过滤拓展名,比如只想统计.cpp的文件,也可以指定文件或者指定目录进行统计.写完这个工具第一件事情就 ...

  4. Qt音视频开发31-Onvif抓拍图片

    一.前言 抓拍是个很重要的功能,比如在报警视频联动中需要一张实时的图片,很多SDK不提供抓拍功能,而通过预览抓图,得到的图片已不具有实时性,那如何得到实时的图片呢?现在的IPC基本上都支持ONVIF协 ...

  5. [转]解决Android Studio初次配置可能会出现的Unkown Host问题

    Unkown Host"杩欐槸鍦ㄤ富鏈哄悕瑙f瀽鏃堕 氬父鍑虹幇鐨勬殏鏃", You may need to adjust the proxy settings in Gradle ...

  6. uniapp请求封装-token无感刷新

    当前是vue3+ts版本的封装 vue3+js版本请求封装可参考 https://www.cnblogs.com/lovejielive/p/14343619.html token无感刷新,可自行删除 ...

  7. C# WinForm 检查目标主机的端口是否可连接

    一个小工具. namespace IPPort_CheckTool { partial class MainForm { /// <summary> /// 必需的设计器变量. /// & ...

  8. 最新AI智能体开发案例:小红书养生博主必备!教你用Coze工作流搭建「养生赛道」智能体!

    嗨~我是老包.目前专注AI智能体开发与教学 ,持续分享Coze智能体.coze工作流搭建案例.** 老包用扣子为小红书养生赛道博主捏了一个神器 名字是: 「 小红书 | 爆款养生赛道图文生成器」 为什 ...

  9. Java一个入门级MVC基于Spring Boot项目

    首先根据上一篇文章内容创建一个Spring Boot项目,如图所示: 一,创建Controller并返回数据 在src/main/java/项目文件夹下面创建package,继续里面可以创建模块的pa ...

  10. [rustGUI][iced]基于rust的GUI库iced(0.13)的部件学习(04):实现窗口主题(颜色)变换(暨menu菜单的使用)

    前言 本文是关于iced库的部件介绍,iced库是基于rust的GUI库,作者自述是受Elm启发. iced目前的版本是0.13.1,相较于此前的0.12版本,有较大改动. 本合集是基于新版本的关于分 ...