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

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

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

https://developer.aliyun.com/article/1507891


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_OBJECT
 
public:
    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_OBJECT
 
public:
    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)”简称为URL
 
MainWindow::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_OBJECT
 
public:
    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{
 
    }
}

编译执行结果:

相关文章
|
6天前
|
网络协议 Linux C++
【Qt】多种控件实现“hello world“
【Qt】多种控件实现“hello world“
|
6天前
|
前端开发 程序员 API
【Qt】控件介绍
【Qt】控件介绍
|
10天前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 空白项Spacer
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 空白项Spacer
24 2
|
10天前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 表单布局Form Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 表单布局Form Layout
23 2
|
10天前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 网格布局Grid Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 网格布局Grid Layout
16 2
|
10天前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 水平布局Horizontal Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 水平布局Horizontal Layout
21 2
|
10天前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 垂直布局Vertical Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 垂直布局Vertical Layout
31 2
|
1月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
98 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
4天前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
11 0
|
4天前
【qt】多窗口开发
【qt】多窗口开发
6 0