Qt 常用控件按钮Button 案例分析-1
https://developer.aliyun.com/article/1507891
4.QCheckBox
QCheckBox是一种Qt框架中的部件(widgets),它允许用户选择或取消选择某个选项。它通常用于设置对话框或首选项面板中。QCheckBox组件可以显示标签和选项框,您可以在其上单击以选中或取消选中选项。
QCheckBox类提供了一些方法和信号来处理选项的状态,例如isChecked()方法用于检查选项是否被选中,setCheckState(state)方法用于设置选项的状态等。
QCheckBox的主要特点包括:
- 可以显示文本或非文本(如图标)标签
- 可以设置三种状态:选中、未选中和半选中
- 可以通过绑定到信号和槽来监听选项状态的更改
- 可以与其他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的特点包括:
- 显示丰富,既可以显示文字又可以显示图标;
- 支持设置按钮的快捷键;
- 支持设置按钮所代表的命令或操作;
- 拥有默认按钮的特点,可以自动设置为按下回车键的响应按钮;
- 显示效果类似于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{ } }
编译执行结果: