47-Qt控件详解:Buttons Containers1

news2024/10/6 20:35:31

一 QPushButton (命令按钮)

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPushButton>//引入QPushButton类对应的头文件

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private:
    //声明两个QPushButton对象
    QPushButton *pb1,*pb2;

private slots:
    //声明对象pb1,pb2的槽函数
    void pushbutton1_clicked();
    void pushbutton2_clicked();

};
#endif // MAINWINDOW_H



#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{

    //setGeometry()改变窗口的大小(pos()size())
    this->setGeometry(300,150,500,300);
    //QString::fromLocal8Bit("命令按钮1")
    //实例化两个命令按钮对象
    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%);}");
}

void MainWindow::pushbutton2_clicked()
{

    this->setStyleSheet("QMainWindow{background-color:rgba(255,0,0,100%);}");
}

 

二 QToolButton (工具按钮) 

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QToolBar>//引入QToolBar类
#include <QToolButton>//引入QToolButton类
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    //声明一个QToolButton对象和QToolBar对象

    QToolBar *tbar;
    QToolButton *tbutton;
};
#endif // MAINWINDOW_H


#include "mainwindow.h"
#include <QStyle>
#include <QApplication>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //3.setGeometry()改变窗口的大小(pos()size())
    this->setGeometry(300,150,500,300);

    //4.将QToolBar对象进行实例化
    tbar = new QToolBar(this);
    tbar->setGeometry(20,20,200,50);

    //5.将QStyle类对象进行实例化,主要目的设置风格,图标是系统自带
    QStyle *sty = QApplication::style();
    QIcon ico = sty->standardIcon(QStyle::SP_TitleBarContextHelpButton);

    //6.将QToolButton对象进行实例化
    tbutton = new QToolButton();
    tbutton->setIcon(ico);
    //设置显示的文本
    tbutton->setText("系统帮助提示");

    //调用函数setToolButtonStyle()函数设置tbutton样式,
    //设置文本在图标下方
    tbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);

    //将tbutton添加到tbar里面
    tbar->addWidget(tbutton);

}
MainWindow::~MainWindow()
{
}

三 QRadioButton (单选按钮)  

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QRadioButton>


class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private:
    //声明2个QRadioButton对象radb1;radb2;
    QRadioButton *radb1,*radb2;



};
#endif // MAINWINDOW_H


#include "mainwindow.h"
#include <QStyle>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //3.setGeometry()改变窗口的大小(pos()size())
    this->setGeometry(300,150,500,300);

    //
    this->setStyleSheet("QMainWindow {background-color:rgba(255,0,0,100%);}");
    //将QRadioButton类的两个对象实例化
    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");

    //设置命令按钮默认值checked

    radb1->setChecked(true);
    radb2->setChecked(false);

}

MainWindow::~MainWindow()
{
}

四 QCheckBox (复选框按钮)

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QCheckBox>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    //声明QCheckBox对象
    QCheckBox *cb;
private slots:
    //声明QCheckBox槽函数,在操作过程当中并且带参数传递,通过这个参数接收信号
    void checkboxstate(int);



};
#endif // MAINWINDOW_H



//.c

#include "mainwindow.h"
#include <QStyle>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //3.setGeometry()改变窗口的大小(pos()size())
    this->setGeometry(300,150,500,300);

    //
    this->setStyleSheet("QMainWindow {background-color:rgba(255,0,0,100%);}");
    //将QRadioButton类的两个对象实例化
    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");

    //设置命令按钮默认值checked

    radb1->setChecked(true);
    radb2->setChecked(false);

}

MainWindow::~MainWindow()
{
}

五 Command Link Button(命令链接按钮 )

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QCommandLinkButton>//

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private:
    //声明一个QCommandLinkButton对象
    QCommandLinkButton *clb;
private slots:
    //声明槽函数使用鼠标点击clb之后触发
    void clbClicked();

};
#endif // MAINWINDOW_H


//.c


#include "mainwindow.h"
#include <QDesktopServices>//引入桌面服务
#include <QUrl>//引入URL

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{

    //3.setGeometry()改变窗口的大小(pos()size())
    this->setGeometry(300,150,500,300);

    this->setStyleSheet("QMainWindow {background-color:rgba(255,0,0,100%);}");

     //实例化
    clb =  new QCommandLinkButton("testclb","clicked testclb",this);

    clb->setGeometry(50,100,250,60);
    //连接槽函数
    connect(clb,SIGNAL(clicked()),this,SLOT(clbClicked()));
}

MainWindow::~MainWindow()
{
}

void MainWindow::clbClicked()
{
    //调用系统服务打开操作
    //https://www.sina.com.cn/
    //QDesktopServices::openUrl(QUrl("www.baidu.com"));
    QDesktopServices::openUrl(QUrl("https://www.sina.com.cn/"));

}

六 Dialog Button Box(按钮盒)

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
//QDialogButtonBox类主要用于在对话框中管理和布局标准按钮。
#include <QDialogButtonBox>
#include <QPushButton>


class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private:
    //声明两个对象
    QDialogButtonBox *dbb;
    QPushButton *pb;
private slots:
    //声明槽函数
    void dbbpbClicked(QAbstractButton *);


};
#endif // MAINWINDOW_H


//.c

#include "mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //3.setGeometry()改变窗口的大小(pos()size())
    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("自定义");
    //将pb添加到dbb并且设定ButtonRole为ActionRole
    /*具体来说,该函数将一个按钮(pb)添加到QDialogButtonBox对象(dbb)中,
     * 并指定其角色为ActionRole。ActionRole通常用于表示对话框中的操作按钮,
     * 例如“确定”、“取消”等。这些按钮通常用于执行一些特定的操作,如保存数据、关闭对话框等。
    */

    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()<<"你已经点击【取消】按钮";
    }
    else if(bt == pb)
    {
        qDebug()<<"你已经点击【自定义】按钮";
    }
}

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

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

相关文章

YOLOv8独家原创改进: AKConv(可改变核卷积)

1.AKConv原理介绍 地址:2311.11587 (arxiv.org) 摘要:基于卷积运算的神经网络在深度学习领域取得了令人瞩目的成果,但标准卷积运算存在两个固有的缺陷。一方面,卷积运算仅限于局部窗口,无法捕获其他位置的信息, 并且它的采样形状是固定的。 另一方面,卷积核的大小固定为…

vue3土味情话pinia可以持久保存再次修改App样式

我是不是你最疼爱的人-失去爱的城市 <template><div class"talk"><button click"getLoveTalk">土味情话</button><ul><li v-for"talk in talkStore.talkList" :key"talk.id">{{ talk.title }}<…

HarmonyOS开发案例:【UIAbility内和UIAbility间页面的跳转】

UIAbility内和UIAbility间页面的跳转&#xff08;ArkTS&#xff09; 介绍 基于Stage模型下的UIAbility开发&#xff0c;实现UIAbility内和UIAbility间页面的跳转。包含如下功能&#xff1a; UIAbility内页面的跳转。跳转到指定UIAbility的首页。跳转到指定UIAbility的指定页…

AtCoder Regular Contest 177 D. Earthquakes(概率 单调栈)

题目 D - Earthquakes 思路来源 官方题解 题解 对于不存在连锁反应的区间&#xff0c;每个区间独立处理&#xff0c;最后求个乘积 对于每个区间&#xff0c;相邻的两个杆子距离都小于H&#xff0c; 意味着没倒的区间是个连续的区间&#xff0c;假设要算i的概率 一定是第i…

软考144-下午题-【试题三】:UML图-类图、用例图

一、分值与目标 题型&#xff1a; 问题一~问题三&#xff08;扩展/UML——>设计模式&#xff09; 二、UML基础知识回顾 2-1、关系 UML中有四种关系&#xff1a;依赖、关联、泛化、实现。 1、关联 关联是一种结构关系&#xff0c;它描述了一组链&#xff0c;链是对象之间的…

Uniapp 自定义弹窗

布局 <view><view v-if"show" class"popup"><view class"popup-box"><view>支付方式:{{way}}</view><view>停车费用:{{money}}</view><view class"btn-box"><view class"ca…

修改el-checkbox样式

一定要在最外层&#xff1b; //未选中框/deep/ .el-checkbox__inner{border-color: #0862a3;}//选中框/deep/ .el-checkbox__input.is-checked .el-checkbox__inner{background-color: #0862a3;border-color: #0862a3;}//未选中框时右侧文字/deep/ .el-checkbox__label{}//选中…

虚拟化技术 挂载iSCSI网络存储器

一、实验内容 挂载iSCSI网络存储器到ESXi主机 二、实验主要仪器设备及材料 安装有64位Windows操作系统的台式电脑或笔记本电脑&#xff0c;建议4C8G或以上配置已安装vSphere Client 三、实验步骤 1、挂载iSCSI网络存储器到ESXi主机 配置ESXi主机的虚拟网络 ESXi识别出三块…

【补充】图神经网络前传——DeepWalk

论文阅读 论文&#xff1a;https://arxiv.org/pdf/1403.6652 参考&#xff1a;【论文逐句精读】DeepWalk&#xff0c;随机游走实现图向量嵌入&#xff0c;自然语言处理与图的首次融合_随机游走图嵌入-CSDN博客 abstract DeepWalk是干什么的&#xff1a;在一个网络中学习顶点…

039——解决室内不能使用GPS问题

目录 引入 GUI整改 client添加GPS分析 完善服务器网络通讯部分代码 添加GPS的BSW层 GPS操作部分代码&#xff08;相当于驱动&#xff09; 效果展示 项目管理操作 引入 最近在写论文加上出去玩了一圈所以停更了一段时间。上次咱们GPS有个室内用不了的问题&#xff0c;咱…

Ubuntu 24 换国内源及原理 (阿里源 清华源 中科大源 网易源)

备份原文件 sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak 编辑源文件 sudo gedit /etc/apt/sources.list.d/ubuntu.sources 粘贴到文本&#xff08;其中一个即可&#xff09;&#xff1a; &#xff08;阿里源&#xff09…

与 Apollo 共创生态:Apollo 七周年大会带我体会自动驾驶技术的发展

前言 自动驾驶技术作为当今科技领域的热门话题&#xff0c;吸引着无数开发者和企业的目光。而在这个风起云涌的行业中&#xff0c;Apollo开放平台作为自动驾驶领域的领军者之一&#xff0c;扮演着不可或缺的角色。七年前&#xff0c;当Apollo开放平台刚刚起步时&#xff0c;也…

C语言(指针)5

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;关注收藏&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#x…

等保一体机能过三级等保吗?过等保无需再买安全设备如何做到?

等保一体机能过三级等保吗&#xff1f;过等保无需再买安全设备如何做到&#xff1f; 全云在线 2024-03-28 12:08 广东 尽管等保建设的标准是统一的&#xff0c;但由于不同行业和用户规模的差异&#xff0c;建设方案呈现出多样化的特点。 虽然重点行业过等保现象确实已经十分…

【35分钟掌握金融风控策略25】定额策略实战2

目录 基于收入和负债的定额策略 确定托底额度和盖帽额度 确定基础额度 基于客户风险评级确定风险系数 计算最终授信额度 确定授信有效期 基于收入和负债的定额策略 在实际生产中&#xff0c;客户的收入和负债数据大多无法直接获得&#xff0c;对于个人的收入和负债数据&…

中小型客户过等保,选择比努力重要!

国内谈网络安全&#xff0c;等保是绕不过去的话题。 作为国家网络安全保障的基本制度、基本策略、基本方法&#xff0c;等保经过十几年发展&#xff0c;其基本概念、相关标准已经深入人心&#xff0c;市面上各类成熟的等保方案让用户应接不暇&#xff0c;挑花了眼。 网络安全…

数据结构之排序(上)

片头 嗨&#xff0c;小伙伴们&#xff0c;大家好&#xff01;我们今天来学习数据结构之排序&#xff08;上&#xff09;&#xff0c;今天我们先讲一讲3个排序&#xff0c;分别是直接插入排序、冒泡排序以及希尔排序。 1. 排序的概念及其应用 1.1 排序的概念 排序&#xff1a…

R语言数据分析案例-股票可视化分析

一、数据整合的对象 # Loading necessary libraries library(readxl) library(dplyr)# Reading the data from Excel files data_1 <- read_excel("云南白药.xlsx") data_2 <- read_excel("冰山.xlsx")二、数据整合的代码 # Reading the data from…

Docker:docker在项目中常用的一些命令

简介   Docker 是一个开源的容器化平台&#xff0c;它允许开发者将应用程序及其依赖项打包到一个可移植的容器中&#xff0c;并发布到任何安装了 Docker 引擎的机器上。这些容器是轻量级的&#xff0c;包含了应用程序运行所需的所有东西&#xff0c;如代码、系统库、系统工具…

“数字化叙事的革命:人工智能驱动的创意工具的崛起”

近年来&#xff0c;人工智能 (AI) 改变了我们生活的许多方面&#xff0c;数字故事讲述的世界也不例外。随着人工智能驱动的创意工具的出现&#xff0c;广告商、内容创作者和专业人士现在配备了创新的解决方案来简化他们的工作流程&#xff0c;增强他们的创意输出&#xff0c;并…