Qt 常用控件按钮Button 案例分析

目录

常用控件按钮

1.QPushButton

2.QToolButton

3.QRadioButton

4.QCheckBox

5.QCommandLinkButton

6.QDialogButtonBox


常用控件按钮

  • Push Button: 命令按钮。

  • Tool Button:工具按钮。

  • Radio Button:单选按钮。

  • Check Box: 复选框按钮

  • Command Link Button: 命今链接按钮

  • Dialog Button Box : 按钮盒

1.QPushButton

QPushButton 是一种 Qt 应用程序中常用的小部件,它是一个可以呈现文本或图像的简单按钮。用户可以单击这个按钮来触发一个动作或事件。PushButton 可以设置文本,图像或两者的组合。它还支持一些属性,如禁用状态,默认状态和自动默认状态等。PushButton 还可以设置样式表,使其外观看起来与应用程序的整体外观相匹配。可以通过连接到特定的槽函数来处理按钮的点击事件,从而实现自定义操作。QPushButton 继承自QAbstractButton ,还具有QToolButton 和 QCommandLinkButton等可选风格。

案例分析:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QPushButton>class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();
private:QPushButton *pb1,*pb2;
private slots:void pushbutton1_clicked();void pushbutton2_clicked();};
#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

mainwindow.cpp

#include "mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{setWindowTitle("QPushbutton");// 设置窗口运行位置 this->setGeometry(300,150,500,300);// 实例化两个命令按钮对象pb1 = new QPushButton("命令按钮1",this);pb2 = new QPushButton("命令按钮2",this);// 设置两个QPushButton对象的坐标位置pb1->setGeometry(20,20,150,50);pb2->setGeometry(20,90,150,50);// 与信号槽函数连接connect(pb1,SIGNAL(clicked()),this,SLOT(pushbutton1_clicked()));connect(pb2,SIGNAL(clicked()),this,SLOT(pushbutton2_clicked()));
}MainWindow::~MainWindow()
{
}// 声明对象pb1 pb2的槽函数
void MainWindow::pushbutton1_clicked()
{this->setStyleSheet("QMainWindow {background-color:rgba(255,255,0,100%);}"); // 按钮1按下后变黄色
}void MainWindow::pushbutton2_clicked()
{this->setStyleSheet("QMainWindow {background-color:rgba(255,0,0,100%);}"); // 按钮2按下后变红色
}

编译执行结果:

2.QToolButton

QToolButton是一种特殊的QPushButton,通常用于工具栏和工具箱中。它可以显示图标和文本,可以在单击时显示选择菜单,并支持不同的显示模式,如文本下拉、图标下拉和菜单模式。

QToolButton的特点包括:

  1. 支持常见的按钮样式,如FlatButton、RaisedButton和ToolButton样式。

  2. 可以显式设置按钮的大小和图标的大小,并支持自动调整大小,以适应不同的按钮内容。

  3. 可以设置一个或多个快捷键,方便用户使用。

  4. 可以设置提示工具提示,以提供有关按钮功能的信息。

  5. 支持菜单模式,可以在单击时显示下拉菜单,提供更多选项。

案例分析:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>#include <QToolBar> // 引入QToolBar类
#include <QToolButton> // 引入QToolButton类class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();
private:QToolBar *tbar;QToolButton *tbutton;
};
#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

mainwindow.cpp

#include "mainwindow.h"#include <QApplication>
#include <QStyle>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{//1: 设置窗口标题this->setWindowTitle("QToolButton");//2: 设置窗口运行位置this->setGeometry(300,150,500,300);//3: 将QToolBar对象进行实例化tbar = new QToolBar(this);tbar->setGeometry(150,75,200,150);//4: 将QStyle类对象进行实例化,主要目的设置风格,图标是系统自带QStyle *sty = QApplication::style();QIcon ico = sty->standardIcon(QStyle::SP_TitleBarContextHelpButton);//5: 将QToolButton对象进行实例化tbutton = new QToolButton();tbutton->setIcon(ico);//6: 设置将要显示文本tbutton->setText("系统帮助提示");//7: 调用setToolButtonStyle函数设置tbutton样式,设置文本在图标下方tbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//8: 将tbutton添加到tbar里面tbar->addWidget(tbutton);
}MainWindow::~MainWindow()
{
}

执行编译结果:

3.QRadioButton

QRadioButton是QT框架提供的一种单选按钮控件,用于在多个选项中选择一项。该控件在界面设计中非常常用,如选择性别、选择颜色、选择字体等。它通常与QButtonGroup结合使用,以便在一组中只能选择一个选项。除了基本功能外,还可以通过设置属性和信号槽等方式对控件进行样式和行为定制。

案例分析:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QRadioButton>class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:QRadioButton *radb1,*radb2;
};
#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

mainwindow.cpp

#include "mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{this->setGeometry(300,150,500,300);this->setStyleSheet("QMainWindow {background-color:rgba(255,0,0,100%)}");radb1 = new QRadioButton(this);radb2 = new QRadioButton(this);radb1->setGeometry(20,20,150,40);radb2->setGeometry(20,80,150,40);radb1->setText("选择按钮1");radb2->setText("选择按钮2");radb1->setChecked(true);radb2->setChecked(false);
}MainWindow::~MainWindow()
{
}

编写执行结果:

4.QCheckBox

QCheckBox是一种Qt框架中的部件(widgets),它允许用户选择或取消选择某个选项。它通常用于设置对话框或首选项面板中。QCheckBox组件可以显示标签和选项框,您可以在其上单击以选中或取消选中选项。

QCheckBox类提供了一些方法和信号来处理选项的状态,例如isChecked()方法用于检查选项是否被选中,setCheckState(state)方法用于设置选项的状态等。

QCheckBox的主要特点包括:

  1. 可以显示文本或非文本(如图标)标签
  2. 可以设置三种状态:选中、未选中和半选中
  3. 可以通过绑定到信号和槽来监听选项状态的更改
  4. 可以与其他Qt部件集成,例如QGroupBox、QButtonGroup等

案例分析:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QCheckBox>class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();
private:QCheckBox *cb;
private slots:void checkboxstate(int);
};
#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

mainwindow.cpp

#include "mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{// 设置窗口标题this->setWindowTitle("QCheckBox");// 设置窗口运行位置this->setGeometry(400,300,500,300);// 设置窗口颜色this->setStyleSheet("QMainWindow {background-color:rgba(255,100,0,100%);}");cb = new QCheckBox(this);cb->setGeometry(30,50,250,50);cb->setCheckState(Qt::Checked);cb->setText("初始化状态为:Checked状态");cb->setTristate();connect(cb,SIGNAL(stateChanged(int)),this,SLOT(checkboxstate(int)));}MainWindow::~MainWindow()
{
}void MainWindow::checkboxstate(int state)
{switch(state){case Qt::Checked:cb->setText("选中状态OK");break;case Qt::Unchecked:cb->setText("未选中状态NO");break;case Qt::PartiallyChecked:cb->setText("半选中状态OK");break;default:break;}
}

编译执行结果:

5.QCommandLinkButton

QCommandLinkButton是Qt中的一种按钮控件,它是QPushButton的子类。它可以显示一段文字和一个图标,并且支持为按钮设置一个快捷键。它通常用于显示执行某个命令或者打开某个对话框的操作,因为它具有更丰富的内容展示和更加直观的操作反馈。

QCommandLinkButton的特点包括:

  1. 显示丰富,既可以显示文字又可以显示图标;
  2. 支持设置按钮的快捷键;
  3. 支持设置按钮所代表的命令或操作;
  4. 拥有默认按钮的特点,可以自动设置为按下回车键的响应按钮;
  5. 显示效果类似于Windows Vista及更高版本中的控件,并符合Windows用户界面设计规范。

案例分析:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QCommandLinkButton>class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();
private:QCommandLinkButton *clb;
private slots:void clbClicked();
};
#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

mainwindow.cpp

#include "mainwindow.h"#include <QDesktopServices> // 引入桌面服务
#include <QUrl> // 引入URL 统一资源定位符(Uniform Resource Locator)”简称为URLMainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{this->setWindowTitle("QCommandLinkButton");// 设置窗口运行位置this->setGeometry(400,300,500,300);clb = new QCommandLinkButton("testclb","clicked testclb",this);clb->setGeometry(50,100,250,80);connect(clb,SIGNAL(clicked()),this,SLOT(clbClicked()));}MainWindow::~MainWindow()
{
}void MainWindow::clbClicked()
{// 调用系统服务打开操作QDesktopServices::openUrl(QUrl("https://i.csdn.net/#/user-center/profile?spm=1000.2115.3001.5111"));
}

编译执行结果:

6.QDialogButtonBox

QDialogButtonBox类是Qt框架中的一个常用类,它是一个用于显示对话框按钮的集合的小部件。QDialogButtonBox可以使用默认的标准按钮或自定义按钮。标准按钮包括:Ok、Cancel、Save、Discard、Apply、Reset、Close、Yes、No、Abort、Retry和Ignore。QDialogButtonBox还可以使用addButton()方法添加自定义按钮,或者使用removeButton()方法删除按钮。

QDialogButtonBox类通常用于对话框窗口,提供样式统一的标准按钮,方便用户进行交互操作。可以通过其signals和slot机制方便地获取用户交互操作的结果。

案例分析:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QDialogButtonBox>
#include <QPushButton>class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();
private:QDialogButtonBox *dbb;QPushButton *pb;
private slots:void dbbpbClicked(QAbstractButton *);
};
#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

mainwindow.cpp

#include "mainwindow.h"
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{this->setWindowTitle("QDialogButtonBox");// 设置窗口运行位置this->setGeometry(0,0,800,600);dbb=new QDialogButtonBox(this);dbb->setGeometry(300,200,200,30);dbb->addButton(QDialogButtonBox::Cancel);dbb->button(QDialogButtonBox::Cancel)->setText("取消");pb = new QPushButton("自定义",this);dbb->addButton(pb,QDialogButtonBox::ActionRole);connect(dbb,SIGNAL(clicked(QAbstractButton *)),this,SLOT(dbbpbClicked(QAbstractButton *)));
}MainWindow::~MainWindow()
{
}void MainWindow::dbbpbClicked(QAbstractButton *bt)
{if(bt == dbb->button(QDialogButtonBox::Cancel)){qDebug()<<"你已经点击【取消】按钮"<<endl;}else if(bt==pb){qDebug()<<"你已经点击【自定义】按钮"<<endl;}else{}
}

编译执行结果:

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

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

相关文章

2023年中国医学影像信息系统市场规模、竞争格局及行业趋势分析[图]

医学影像信息系统简称PACS&#xff0c;与临床信息系统、放射学信息系统、医院信息系统、实验室信息系统同属医院信息系统。医学影像信息系统是处理各种医学影像信息的采集、存储、报告、输出、管理、查询的计算机应用程序。主要包括&#xff1a;预约管理、数据接收、影像处理、…

Java实现RSA加密和验证

Java实现RSA加密和验证 生成公私钥基础的公钥加密私钥解密自定义密钥加密及校验加密校验测试验证 使用RSA进行数字签名和验证 RSA&#xff08;Rivest–Shamir–Adleman&#xff09;是一种非对称加密算法&#xff0c;由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出&…

pdf怎么压缩?pdf文件缩小的方法在这里

PDF文件由于其跨平台、可打印性强等特点&#xff0c;成为了我们日常工作中经常使用的一种文件格式。然而&#xff0c;这种格式的文件有时候会因为过于庞大而给我们的存储和传输带来困扰&#xff0c;其实&#xff0c;这种情况只需要通过一些工具对PDF文件进行压缩&#xff0c;即…

遗传算法入门笔记

目录 一、大体实现过程 二、开始我们的进化(具体实现细节) 2.1 先从编码说起 2.1.1 二进制编码法 2.1.&#xff12; 浮点编码法 2.1.3 符号编码法 2.2 为我们的袋鼠染色体编码 2.3 评价个体的适应度 2.4 射杀一些袋鼠 2.5 遗传--染色体交叉(crossover) 2.6 变异--基…

前端TypeScript学习day03-TS高级类型

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 TypeScript 高级类型 class 类 class继承 extends implements 类成员可见性 public protected …

知识增强语言模型提示 零样本知识图谱问答10.8+10.11

知识增强语言模型提示 零样本知识图谱问答 摘要介绍相关工作方法零样本QA的LM提示知识增强的LM提示与知识问题相关的知识检索 实验设置数据集大型语言模型基线模型和KAPIN评估指标实现细节 实验结果和分析结论 摘要 大型语言模型&#xff08;LLM&#xff09;能够执行 零样本cl…

史上最全 结构型模式之 桥接 外观 组合 享元模式

史上最全 结构型模式之 代理 适配器 装饰者 模式-CSDN博客 5.4 桥接模式 5.4.1 概述 现在有一个需求&#xff0c;需要创建不同的图形&#xff0c;并且每个图形都有可能会有不同的颜色。我们可以利用继承的方式来设计类的关系&#xff1a; 我们可以发现有很多的类&#xff0c;假…

WPF向Avalonia迁移(二、一些可能使用到的库)

可能使用到的一些库 1. UI库 开源项目&#xff1a;https://github.com/irihitech/Semi.Avalonia 如果想引用他的DataGrid样式还需要添加Semi.Avalonia.DataGrid 2. 图表库 LiveChartsCore.SkiaSharpView.Avalonia 3.SVG库 开源项目&#xff1a;https://github.com/wieslaw…

01 初识FPGA

01 初识FPGA 一.FPGA是什么 FPGA&#xff08;Filed Programmable Gate Array&#xff09;&#xff0c;现场可编程门阵列&#xff0c;一种以数字电路为主的集成芯片&#xff0c;属于可编程逻辑器件PLD的一种。 1.1 两大巨头 Xilinx(赛灵思)Altera&#xff08;阿尔特拉&#…

加密市场波动:地缘政治与美股走弱引发不确定性!

伴随着国庆假期的结束&#xff0c;多日波动率维持低位的加密市场也似乎开始苏醒。近期多次突破28000美元未果的比特币&#xff0c;于9日15:00开始从27800美元附近下跌&#xff0c;最低跌至27260美元&#xff0c;同期以太坊也至1550美元左右&#xff0c;创近半个月来新低。 Coin…

ArcGIS/GeoScene脚本:基于粒子群优化的支持向量机分类模型

参数输入 输出 栅格 预测为负类的概率 预测为正类的概率 二值化结果 评估结果 ROC曲线

c++视觉---使用轨迹条设置图片的对比度,亮度

轨迹条&#xff1a;cv::createTrackbar cv::createTrackbar 是OpenCV库中的一个函数&#xff0c;用于创建一个图形用户界面 (GUI) 中的滑动条控件&#xff0c;允许用户在应用程序运行时调整特定参数的值。这个函数的调用方式如下&#xff1a; int cv::createTrackbar(const s…

Mac navicat连接mysql出现1045 - Access denied for user ‘root‘

Mac navicat连接mysql出现1045 - Access denied for user ‘root’ 前提&#xff1a;如果你的mac每次开navicat都连接不上&#xff0c;推荐试试我这个方法 1.打开设置–>找到左下角最下面的MySQL–>点击Stop MySQL Server 2.开启一个终端&#xff0c;依次输入以下命令&a…

C++:关于模拟实现vector和list中迭代器模块的理解

文章目录 list和vector的迭代器对比list的实现过程完整代码 本篇是关于vector和list的模拟实现中&#xff0c;关于迭代器模块的更进一步理解&#xff0c;以及在前文的基础上增加对于反向迭代器的实现和库函数的对比等 本篇是写于前面模拟实现的一段时间后&#xff0c;重新回头…

【论文笔记】A theory of learning from different domains

防盗 https://www.cnblogs.com/setdong/p/17756127.html domain adaptation 领域理论方向的重要论文. 这篇笔记主要是推导文章中的定理, 还有分析定理的直观解释. 笔记中的章节号与论文中的保持一致. 1. Introduction domain adaptation 的设定介绍: 有两个域, source domain…

轻量限制流量?阿里云轻量应用服务器月流量包收费说明

阿里云轻量应用服务器部分套餐限制月流量&#xff0c;轻量应用服务器按照套餐售卖&#xff0c;有的套餐限制月流量&#xff0c;有的不限制流量。像阿里云轻量2核2G3M带宽轻量服务器一年108元和轻量2核4G4M带宽一年297.98元12个月&#xff0c;这两款是不限制月流量的。阿里云百科…

中国植被功能型图(1km分辨率)

简介&#xff1a; 植被功能型&#xff08;PFT&#xff09;是根据植物种的生态系统功能及其资源利用方式而对宠大的植物种进行的组合&#xff0c;每一种植被功能型共享相似的植物属性&#xff0c;是将植物种的多样性简化为植物功能和结构的多样性,用以预测全球变化情景下生态系…

优盘中毒了怎么办?资料如何恢复

在现代社会中&#xff0c;优盘成为我们日常生活与工作中必备的便携式存储设备。然而&#xff0c;正是由于其便携性&#xff0c;优盘也成为病毒感染的主要目标之一。本篇文章将帮助读者了解如何应对优盘中毒的情况&#xff0c;以及如何恢复因病毒感染丢失的资料。 ▶优盘为什么…

简单好用的CHM文件阅读器 CHM Viewer Star最新 for mac

CHM Viewer Star 是一款适用于 Mac 平台的 CHM 文件阅读器软件&#xff0c;支持本地和远程 CHM 文件的打开和查看。它提供了直观易用的界面设计&#xff0c;支持多种浏览模式&#xff0c;如书籍模式、缩略图模式和文本模式等&#xff0c;并提供了丰富的功能和工具&#xff0c;如…

温度在线检测技术在电力电缆线路的应用

在电力电缆的日常运行检测中&#xff0c;针对电缆温度的状况&#xff0c;所采用的电力温度在线检测技术也得到了大范围的普及。电网系统中&#xff0c;其单位时间内可输送的电力能源受到其温度的变化影响。因此&#xff0c;采用更有效的方式实时检测电缆系统运行温度&#xff0…