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. SpringBoot 2.0.0新版和SpringBoot1.5.2版本中Tomcat配置的差别(坑)

    2018年春SpringBoot 2.0.0 新版本有了很多新的改变,其中Tomcat配置上也有了很大改变1.之前老的版本TomcatEmbeddedServletContainerFactory取的 ...

  2. Qt/C++编写推流综合应用示例(文件推流/桌面推流/本地摄像头/网络摄像头/转发推流/视频分发)

    一.功能特点 1.1 文件推流 指定网卡和监听端口,接收网络请求推送音视频等各种文件. 实时统计显示每个文件对应的访问数量.总访问数量.不同IP地址访问数量. 可指定多种模式,0-直接播放.1-下载播 ...

  3. Qt编写安防视频监控系统37-onvif预置位

    一.前言 预置位在视频监控系统中是不可或缺的存在,响应预置位功能的前提是要带预置位的云台球机,有些普通的云台球机其实不带预置位的,这个要检查清楚,硬件上不支持该功能的,你再怎么点也没反应.在这个视频监 ...

  4. 使用百度地图API服务中的问题汇总

    1.服务器端与浏览器端的AK的区别 服务端就是指数据操作需要在百度地图服务器上进行接口数据交互,不能在前端代码中直接调用,跨域不支持,开发多一个后端: 浏览器端就是指数据操作需要在Web前端就可以完成 ...

  5. IM开发者的零基础通信技术入门(十五):理解定位技术,一篇就够

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<老司机揭秘手机定位技术,这下彻底明白啦!>文章内容.为了更好的内容呈现,下文在引用和收录时内容有改动,转载时请注明原文来 ...

  6. 《深入理解Mybatis原理》MyBatis配置解析过程

    配置解析主体方法 public Configuration parse() { if (parsed) { throw new BuilderException("Each XMLConfi ...

  7. 记录使用socket.io的使用

    今天记录一下node.js的egg框架搭建的socket.io,前端联合使用 首先得引入socket.io的js,我这边是用的下载到本地的一个js 引入:const io = require('../ ...

  8. runoob-PostgreSQL 教程

    https://www.runoob.com/postgresql/postgresql-tutorial.html

  9. biancheng-JSTL标签库

    JSP 标签是一组与 HTML 标签相似,但又比 HTML 标签强大的功能标签.JSTL 用来简化 JSP 开发,可以使我们不用嵌入 Java 代码就能够开发出复杂的 JSP 页面.JSTL 包含 5 ...

  10. mysql数据库指定ip远程访问(设置远程连接),赋权操作

    mysql数据库指定ip远程访问(设置远程连接) 远程访问mysql报错,ip不允许链接的情况:错误号码1045Access denied for user '用户名' @'数据库地址' (using ...