Qt控件学习

news2024/12/23 13:30:20

目录

QPushButton

 QToolButton

QRadioButton

QCheckBox


QPushButton


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->n1->setText("我的世界");
    ui->n1->setIcon(QIcon(":/111"));
    ui->n1->setIconSize(QSize(30, 30));
    connect(ui->n1,&QPushButton::clicked,this,[=](){
        qDebug()<<"你好世界.";
    });

    //有checked属性的按钮
    ui->n2->setCheckable(true);
    connect(ui->n2,&QPushButton::toggled,this,[=](bool bl){
        qDebug()<<"等待..."<<bl;
    });
    //关联菜单
    ui->n3->setText("选择你喜欢的城市");
    QMenu *menu=new QMenu;
    QAction*act=menu->addAction("福建");
    menu->addAction("杭州");
    menu->addAction("成都");
    menu->addAction("上海");
    ui->n3->setMenu(menu);
    connect(act,&QAction::triggered,this,[=]{
        qDebug()<<"喜欢..."<<act;
    });

}

 

 QToolButton

他是高配版QPushButton

添加如下代码:

    // 设置图标和文本的显示模式 3种
    //用qaction方式去设置图标和文本信息
    QAction* ac=new QAction(QIcon(":/222"),"冲冲冲");
    ui->n4->setDefaultAction(ac);
    connect(ui->n4,&QToolButton::triggered,this,[=](){
        ac->setText("我是修改后的");
        ac->setIcon(QIcon(":/111"));
    });
    //基于自带的样式,给按钮设置箭头图标
    ui->n5->setArrowType(Qt::UpArrow);
    ui->n5->setText("向上");
    ui->n5->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//都显示
  
    //关联菜单  设置成不延时的  ,有三种 ,默认是延时的
    ui->n6->setMenu(menu);
    ui->n6->setPopupMode(QToolButton::MenuButtonPopup);
    connect(ui->n6,&QToolButton::clicked, this, [=]()
    {
        qDebug() << "我是新菜单按钮...";
    });

QRadioButton

QRadioButton 是 Qt 提供的单选按钮,如果单选按钮被选中, 再次点击这个按钮选中状态是不能被取消的。且一组只能选一个,它的父类是 QAbstractButton。

用容器去吧这一组一组的按钮区分开来,容器

如下: 

这里我们选择group box 把一组按钮放一起,给这些按钮设置一个槽函数,选中后做个打印看看

void MainWindow::on_r1_clicked()
{
     qDebug() << "要吃饭...";
}

void MainWindow::on_r2_clicked()
{
     qDebug() << "要睡觉...";
}

void MainWindow::on_r3_clicked()
{
     qDebug() << "要打豆豆...";
}

void MainWindow::on_r4_clicked()
{
     qDebug() << "不要上班...";
}

void MainWindow::on_r5_clicked()
{
     qDebug() << "要下班...";
}

void MainWindow::on_r6_clicked()
{
     qDebug() << "卷死你...";
}

QCheckBox

QCheckBox 是 Qt 中的复选框按钮,可以单独使用,也可以以组的方式使用 (同一组可以同时选中多个), 当复选按钮被选中, 再次点击之后可以取消选中状态, 这一点和单选按钮是不同的。

我们对复选框按钮操作的时候,可以设置选中和未选中状态,并且还可以设置半选中状态,这种半选中状态一般需要当前复选框按钮下还有子节点,类似一树状结构。

举个例子:常常在软件中见到的操作

我们利用 QCheckBox,层层实现这种分复选的效果,点击分类,可全选下方具体类别,选中部分类别或不选,或全选对应分类显示也是不同的

我们在mainwindow.h添加成员

    // 添加槽函数, 处理复选框按钮状态变化
    void statusChanged(int );
    

    int count=0;//计数器

 在mainwindow.cpp去实现具体的连接

    //设置根节点 ,分类 ,的三态属性
    ui->fenlei->setTristate(true);
    //处理根节点点击鼠标的事件
    connect(ui->fenlei, &QCheckBox::clicked, this, [=](bool bl){
       if(bl){//被选中的状态
           ui->kehuan->setChecked(true);
           ui->aiqing->setChecked(true);
           ui->xiju->setChecked(true);
       }
       else{
           ui->kehuan->setChecked(false);
           ui->aiqing->setChecked(false);
           ui->xiju->setChecked(false);
       }
    });
    //处理子节点的一个状态变化,实现槽函数
    connect(ui->kehuan,&QCheckBox::stateChanged,this,&MainWindow::statusChanged);
    connect(ui->aiqing,&QCheckBox::stateChanged,this,&MainWindow::statusChanged);
    connect(ui->xiju,&QCheckBox::stateChanged,this,&MainWindow::statusChanged);



void MainWindow::statusChanged(int st)
{
    if(st==Qt::Checked){
        count++;//选中了 ++
    }
    else{
        count--;
    }
    // 根据计数器值判断根节点是否需要做状态的更新
     if(count == 3)
     {
         ui->fenlei->setCheckState(Qt::Checked);
     }
     else if(count == 0)
     {
         ui->fenlei->setCheckState(Qt::Unchecked);
     }
     else
     {
         ui->fenlei->setCheckState(Qt::PartiallyChecked);
     }
}

点击分类,全选

 部分选中

子节点全选,根节也选中

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

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

相关文章

异构广告混排在美团到店业务的探索与实践

转子&#xff1a;https://tech.meituan.com/2022/03/10/exploration-and-practice-of-heterogeneous-ad-mixed-ranking-in-meituan-ads.html 1 背景与简介 1.1 背景 美团到店广告负责美团搜索流量的商业变现&#xff0c;服务于到店餐饮、休娱亲子、丽人医美、酒店旅游等众多…

文言一心,ChatGLM-6B和ChatGPT等模型概述

原文首发于博客文章大语言模型概况 定义 &#xff08;个人理解的&#xff09;大语言模型&#xff08;Large Language Model&#xff09;是一种基于深度学习技术的自然语言处理通用模型&#xff0c;它可以通过学习大规模文本数据的模式和规律&#xff0c;从而实现对自然语言的理…

【面试】你知道数据库能抗多大并发压力吗?

文章目录 前言一、一般业务系统运行流程图二、一台4核8G的机器能扛多少并发量呢&#xff1f;三、高并发来袭时数据库会先被打死吗&#xff1f;四、数据库架构可以从哪些方面优化&#xff1f;4.1、根据业务系统拆分多个数据库机器优化方案4.2、读写分离架构优化方案4.3、分库分表…

华为手表上架(1)HarmonyOS应用 打包 .app

华为手表上架&#xff08;1&#xff09;HarmonyOS应用 打包 .app 初环境与设备先找到配置项目结构的地方&#xff1a; Project Structure配置证书打包 .app 在本文中&#xff0c;我们介绍探讨华为手表上架的流程&#xff0c;并重点介绍HarmonyOS应用的打包过程。了解如何将应用…

locust学习教程(5) - 分布式执行

目录 前言 1、基础 2、操作步骤 2.1、启动主节点 2.2、启动从节点 2.2.1、启动自己电脑的从节点 2.2.2、启动同事电脑的从节点 2.3、开始并发 3、无web界面&#xff0c;定时运行&#xff0c;数据存储在csv中、等待4个节点连接后自动开始 4、有web界面&#xff0c;定时运…

5年测试老鸟整理,企业自动化测试经验,不要再走弯路了...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 2023年&#xff0…

vue-antdesign——实现table单元格合并+换行展示+滚动到指定位置+行样式设置——技能提升

最近在写后台管理系统&#xff0c;遇到一个需求&#xff0c;就是要实现表格table组件的合并单元格&#xff0c;并实现编辑等功能。 效果图如下&#xff1a; 下面做一下记录&#xff1a; 1.表格table组件实现单元格合并 之前写过一篇文章关于单元格合并的功能&#xff0c;这…

倒谱和同态去卷积

本文首发于算法社区&#xff0c;转载请注明出处&#xff0c;谢谢。 前言 倒谱的内容比较少&#xff0c;比较相关的就是同态系统去卷积了&#xff0c;所以把这两个放在一起了。 倒谱 我们考虑一个具有 z z z 变换的序列 { x n } \left \{ x_{n} \right \} {xn​} 。我们假设…

Elasticsearch(十一)搜索---搜索匹配功能②--range查询和exists查询

一、前言 继上一节学习了ES的搜索的查询全部和term搜索后&#xff0c;此节将把搜索匹配功能剩余的2个学习完&#xff0c;分别是range搜索和exists搜索 二、range范围搜索 range查询用于范围查询&#xff0c;一般是对数值型和日期型数据的查询。使用range进行范围查询时&…

创建多线程的四种方式

目录儿 一、创建线程的四种方式1. 继承Thread类2. 实现Runnable接口3. 实现Callable接口4. 线程池禁止使用 Executors 构建线程池构建线程池的正确方式 一、创建线程的四种方式 1. 继承Thread类 ① 创建一个类继承Thread类&#xff0c;重写run()方法 ② 调用start()方法启动线…

AI卷入618战场;印象AI开放次数限制;2023 AIGC人才趋势洞察报告;员工瞒着老板悄悄用AI;超好用的AI头像生成教程 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 澳洲游戏媒体 Gamurs 招聘AI编辑&#xff0c;被各路媒体口诛笔伐 上周&#xff0c;澳洲知名游戏媒体集团 Gamurs 在官网招聘「AI Edit…

负载测试和压力测试有何区别?资深测试老鸟总结,一篇搞定...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 负载与压力测试 …

js中数组对象去重的几种方式

js中数组对象去重的几种方式 1、方法一&#xff1a;双层for循环2、对象访问属性的方法3、Map()方法4、reduce方法 首先我们定义数组的形式 let arrObj [{ name: "张三", key: 1 },{ name: "李四", key: 2 },{ name: "王五", key: 3 },{ name: &…

基于langchain+chatGLM搭建部署本地私有化知识库系统

前言 一、 自主GPT 所谓自主&#xff08;autonomous&#xff09;GPT是设计一个Agent&#xff0c;让它自己做计划、决策和动作&#xff0c;通过源源不断的迭代&#xff0c;去完成设定的目标。比如 AutoGPT 。 AutoGPT把GPT的能力推向了更高的应用层次。设定一个任务&#xff…

mac下qtcreator代码格式化

代码开发&#xff1a;qtcreator qtcreator 插件&#xff1a;Beautifier 格式化工具&#xff1a;clang-format 1、Beautifier插件安装 将复现框勾选后重启qtcreator即可。 2、安装clang-format工具 &#xff08;1&#xff09;打开终端输入下面命令等待安装完成 brew install…

Python基础(19)——Python函数讲解一

Python基础&#xff08;19&#xff09;——Python函数讲解一 文章目录 Python基础&#xff08;19&#xff09;——Python函数讲解一目标一. 函数的作用二. 函数的使用步骤2.1 定义函数2.2 调用函数2.3 快速体验 三.函数的参数作用四.函数的返回值作用4.1 应用 五.函数的说明文档…

大快人心,华为EDA领域的新突破,关联软件已取得全面适配

EDA被称为“芯片之母”&#xff0c;是集成电路、电子信息&#xff0c;甚至是全球数字经济的赋能者&#xff0c;是许多电子产业链的基石。 一直以来&#xff0c;就被国际的三大巨头占领&#xff1a;美国Synopsys、美国Cadence、德国Mentor Graphics&#xff0c;市场份额高达90%。…

locust学习教程(6)- 使用更快的http客户端:FastHttpUser

目录 1、概念 2、估算电脑允许的最大并发数 3、fasthttpuser的使用 &#x1f381;更多干货 完整版文档下载方式&#xff1a; 1、概念 Locust 的默认 HTTP 客户端使用的是 python-requests 库。如果我们需要运行非常高的吞吐量测试&#xff0c;去判断吞吐量是否达到预期值&…

免费文字转语音软件哪个好?推荐这三款文字转语音软件给你

文字转语音软件可以将我们输入的文字内容转化为人声朗读出来&#xff0c;这在很多场合都非常实用。比如&#xff0c;在开车或者做家务时&#xff0c;无法手持手机进行阅读&#xff0c;但是通过文字转语音功能&#xff0c;就可以轻松地听取所需内容。然而&#xff0c;市面上的文…

贴吧私信辅助软件工具开发

贴吧私信辅助软件工具开发&#xff0c;贴吧无线私信&#xff0c;用好贴吧也是一个大流量途径 【引流必备】最新外面卖1000多一套的贴吧私信机&#xff0c;日发私信十万条【详细视频操作教程软件】 服务时间&#xff1a;&#xff08;8&#xff1a;00—23&#xff1a;00&#xf…