【快速上手QT】08-Buttons组件

我们差不多把QT的基础部分讲差不多了。接下来我们把一些组件介绍一下,最后再开始QT的进阶部分,需要先把基础打牢嘛,也当是练习练习怎么使用QT助手了。

就按照QtDesigner里的顺序,今天我们讲一讲Buttons,也就是按钮组件。

因为这个系列的第二篇,学习使用QT助手的那一篇里我是以QPushButton为例的,并且QPushButton也是最常用的,相信大家也都懂的怎么用了,因此我们跳过第一个组件,直接开始第二个组件QToolButton。

QToolButton

用QT助手去查阅组件,我们首先要注意的点就是我红框框起来的地方。

第一个是我们要使用这个组件需要包含的头文件。

第二个是我们在配置文件里需要有的。

第三个是它这个组件继承于谁,很多基础的方法我们是需要从它祖上去查的。

那么我们今天就不查组件祖上了,我们就只看这些组件的特性。

我们看看他的公共函数。之前的文章提到过,以set开头的函数都是设置组件用的,因此我们从上面四个函数入手。

setArrowType

从它的名字就可以猜个大概出来,如果看得懂英文的小伙伴也可以直接从QT助手中知道这个函数是做什么的。

就是设置QToolButton的箭头图标的。

我们先初始化一个普普通通的QToolButton出来。

#include "Zhetu.h"
#include <QToolButton>

Zhetu::Zhetu(QWidget *parent): QMainWindow(parent){
	this->setFixedSize(650, 400);
	
	QToolButton* tb = new QToolButton(this);
	tb->setFixedSize(100, 50);
}

Zhetu::~Zhetu()
{}

看得出来这个QToolButton和我们之前用的按钮不一样,这个按钮按下去没有任何反应。

我们再使用这个函数看看有什么不一样的。

我们点击QT助手里的超链接跳转到参数类型里寻找可以填入的参数。

看的出来默认是第一个,也就是无箭头,我们随便选一个看看效果。

所以看的出来这个函数是做什么用的了,但是好像并没有什么卵用,按钮还是点击没有任何效果。

我们接着看下一个函数。

setAutoRaise

根据名字我们得知,这个函数设置我们的QToolButton是否自动提升,参数是一个布尔值,默认是false,那么我们就给它设置为true看看什么效果。

边框消失了。。。消失了。。。所以这玩意有啥用。。。

setMenu

Menu我们都懂,就是菜单,我们之前接触菜单是在QMainWindow中的菜单栏里,而这个QToolButton可以设置菜单,至此我们就算明了这个组件到底是做什么用的了,就是给我们提供一个移动菜单的载体,而不必非要在菜单栏里才可以得到菜单了,虽然我觉得挺鸡肋的

我们就按照添加菜单到菜单栏的步骤给QToolButton添加一个菜单。

#include "Zhetu.h"
#include <QToolButton>


Zhetu::Zhetu(QWidget *parent): QMainWindow(parent){
	this->setFixedSize(650, 400);
	
	QToolButton* tb = new QToolButton(this);
	tb->setFixedSize(100, 50);
	QMenu* m = new QMenu(this);
	m->addAction("one");
	m->addAction("two");
	tb->setMenu(m);
}

Zhetu::~Zhetu()
{}

看的出来QToolButton变了个样,可以看得出是有内容的,但是点击却还是没有反应。

这时候需要请出我们最后一个函数了。

setPopupMode

直译是设置弹出模式,不难想到,就是设置菜单的弹出方式,默认是DelayedPopup,也就是延时弹出,所以我们之前点击按钮一样是没有反应的。

一共是三个可以选的参数,看不懂没关系,我们翻译一下。

可以看的出来,默认是需要长按QToolButton才会弹出菜单。

而第三个选项是点击就立刻弹出菜单,这个才是我们最需要使用的。

QRadioButton&QCheckButton

这俩按钮我们一起将,因为都比较简单,而且功能是差不多的。

在QtDesigner中我们就能直观地看出它们都是拿来勾选用的。

我们直接使用QRadioButton演示一下,因为它除了构造函数之外没有别的什么函数了。因此我们使用它还是得靠它的父类的函数。

#include "Zhetu.h"
#include <QRadioButton>
#include <qdebug.h>

Zhetu::Zhetu(QWidget *parent): QMainWindow(parent){
	this->setFixedSize(650, 400);
	
	QRadioButton* rb = new QRadioButton("rb", this);
	connect(rb, &QRadioButton::clicked, []() {
		qDebug() << "click!";
		});
}

Zhetu::~Zhetu()
{}

像上面这样,我们就成功的通过信号(继承于父类的信号)与槽来获取到是否选中了这个QRadioButton了。

QCheckBox其实也一样,不过它比QRadioButton相比多了点函数,我们一样是直接演示使用。

#include "Zhetu.h"
#include <QCheckBox> 
#include <qdebug.h>

Zhetu::Zhetu(QWidget *parent): QMainWindow(parent){
	this->setFixedSize(650, 400);
	
	QCheckBox* cb = new QCheckBox("cb", this);
	cb->setCheckState(Qt::PartiallyChecked);
	connect(cb, &QCheckBox::clicked, [&]() {
		qDebug() << "click!";
		});
}

Zhetu::~Zhetu()
{}

上面演示了通过setCheckState,我们可以使得这个选择框中出现了除了不选和选择的第三种情况。

这时候我们再请出剩下一个set函数。

这个函数使得我们的选择框一共是有三种状态,不选,半选,选择。

关于选择的这两个按钮就讲这么多,还是很简单的。

QCommandLinkButton

看的出它的函数也不多。

 就一个setDescription,我们先等等,直接构造一个QCommandLinkButton出来看看效果。

#include "Zhetu.h"
#include <QCommandLinkButton>
#include <qdebug.h>

Zhetu::Zhetu(QWidget *parent): QMainWindow(parent){
	this->setFixedSize(650, 400);

	QCommandLinkButton* clb = new QCommandLinkButton("CommandLinkButton", "Description", this);
	clb->setFixedSize(200,100);
}

Zhetu::~Zhetu()
{}

看的出来这个按钮有两个文本,还附带一个小箭头。

根据英文的翻译,可以知道setDescription就是用来设置按钮中第二行比较小的文本的,我们就不另外演示了。

我们直接翻到QT助手中QCommandLinkButton的介绍。

看不懂我们就翻译一下。

所以我们就知道了,这个按钮就是等于普通按钮,只不过它自带了一个箭头图标。

QDialogButtonBox

剩下最后一个button了,其实从QtDesigner中我们就可以知道这个组件是做什么用的了。

没错,就是等于一次性给我们两个按钮。这和我们的QDialog对话框很像。

虽然它叫button,但是它继承的却是QWidget。

它的函数跟QDialog的使用也大差不差,涉及的函数也比较多,这里就不介绍了,可以返回上一篇文章再回顾一下QDialog。

相关推荐

  1. WPF之Button

    2024-03-16 04:38:01       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-16 04:38:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-16 04:38:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-16 04:38:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-16 04:38:01       20 阅读

热门阅读

  1. Go语言的HTTP WEB Demo案例

    2024-03-16 04:38:01       20 阅读
  2. 力扣131分隔回文串

    2024-03-16 04:38:01       17 阅读
  3. Docker部署ruoyi前后端分离项目 补充

    2024-03-16 04:38:01       19 阅读
  4. asan 使用

    2024-03-16 04:38:01       20 阅读
  5. 电脑上同时安装多个版本的cuda

    2024-03-16 04:38:01       22 阅读
  6. js计算百分比

    2024-03-16 04:38:01       19 阅读
  7. Spring: SpringBoot MybatisPlus框架动态数据源

    2024-03-16 04:38:01       24 阅读