本文转载自这里
简单示例QRadioButton和QCheckBox的用法。
建立一个Qt Widgets Application
mybuttonwindow.h
#ifndef MYBUTTONWINDOW_H #define MYBUTTONWINDOW_H #include <QWidget> #include <QPushButton> #include <QGroupBox> #include <QRadioButton> #include <QCheckBox> #include <QLabel> class MyButtonWindow : public QWidget { Q_OBJECT public: explicit MyButtonWindow(QWidget *parent = 0); void initButtons(); signals: public slots: void radioChange(); void checkChange(); private: QGroupBox *radioGroup; QRadioButton *radio1; QRadioButton *radio2; QRadioButton *radio3; QLabel *label11; QLabel *label12; QLabel *label13; QLabel *label1; QGroupBox *checkGroup; QCheckBox *check1; QCheckBox *check2; QCheckBox *check3; QLabel *label21; QLabel *label22; QLabel *label23; QLabel *label2; }; #endif // MYBUTTONWINDOW_Hmybuttonwindow.cpp
#include "mybuttonwindow.h" #include <QPixmap> #include <QBitmap> MyButtonWindow::MyButtonWindow(QWidget *parent) : QWidget(parent) { setGeometry(100,100,230,190); // radio group radioGroup = new QGroupBox("Options 1", this); radioGroup->setGeometry(10,10,100,110); radio1 = new QRadioButton("Choice1", this); radio1->move(20,35); radio2 = new QRadioButton("Choice2", this); radio2->move(20,60); radio3 = new QRadioButton("Choice3", this); radio3->move(20,85); label1 = new QLabel("Option1 Result:", this); label1->setGeometry(10,130,100,20); label1->setAlignment(Qt::AlignRight); // check group checkGroup = new QGroupBox("Options 2", this); checkGroup->setGeometry(120,10,100,110); check1 = new QCheckBox("Choice1", this); check1->move(130,35); check2 = new QCheckBox("Choice2", this); check2->move(130,60); check3 = new QCheckBox("Choice3", this); check3->move(130,85); label2 = new QLabel("Option2 Result:", this); label2->setGeometry(10,160,100,20); label2->setAlignment(Qt::AlignRight); // init buttons initButtons(); // signals and slots connect(radio1, SIGNAL(clicked(bool)), this, SLOT(radioChange())); connect(radio2, SIGNAL(clicked(bool)), this, SLOT(radioChange())); connect(radio3, SIGNAL(clicked(bool)), this, SLOT(radioChange())); connect(check1, SIGNAL(clicked()), this, SLOT(checkChange())); connect(check2, SIGNAL(clicked()), this, SLOT(checkChange())); connect(check3, SIGNAL(clicked()), this, SLOT(checkChange())); } void MyButtonWindow::initButtons() { QPixmap pixmap1(":/btn1_gray"); QPixmap pixmap2(":/btn2_gray"); QPixmap pixmap3(":/btn3_gray"); label11 = new QLabel("", this); label11->setGeometry(120,129,18,19); label11->setPixmap(pixmap1); label11->resize(pixmap1.size()); label12 = new QLabel("", this); label12->setGeometry(149,129,18,19); label12->setPixmap(pixmap2); label12->resize(pixmap2.size()); label13 = new QLabel("", this); label13->setGeometry(178,129,18,19); label13->setPixmap(pixmap3); label13->resize(pixmap3.size()); label21 = new QLabel("", this); label21->setGeometry(120,159,18,19); label21->setPixmap(pixmap1); label21->resize(pixmap1.size()); label22 = new QLabel("", this); label22->setGeometry(149,159,18,19); label22->setPixmap(pixmap2); label22->resize(pixmap2.size()); label23 = new QLabel("", this); label23->setGeometry(178,159,18,19); label23->setPixmap(pixmap3); label23->resize(pixmap3.size()); } void MyButtonWindow::radioChange() { QPixmap pixmap1(":/btn1_gray"); QPixmap pixmap2(":/btn2_gray"); QPixmap pixmap3(":/btn3_gray"); label11->setPixmap(pixmap1); label11->resize(pixmap1.size()); label12->setPixmap(pixmap2); label12->resize(pixmap2.size()); label13->setPixmap(pixmap3); label13->resize(pixmap3.size()); QString url; QLabel *label; if (sender() == radio1) { url = ":/btn1_bright"; label = label11; } else if (sender() == radio2) { url = ":/btn2_bright"; label = label12; } else if (sender() == radio3) { url = ":/btn3_bright"; label = label13; } QPixmap pixmap(url); label->setPixmap(pixmap); label->resize(pixmap.size()); } void MyButtonWindow::checkChange() { QString url; QLabel *label; if (sender() == check1) { url = check1->isChecked() ? ":/btn1_bright" : ":/btn1_gray"; label = label21; } else if (sender() == check2) { url = check2->isChecked() ? ":/btn2_bright" : ":/btn2_gray"; label = label22; } else if (sender() == check3) { url = check3->isChecked() ? ":/btn3_bright" : ":/btn3_gray"; label = label23; } QPixmap pixmap(url); label->setPixmap(pixmap); label->resize(pixmap.size()); }main.cpp
#include <QApplication> #include <QTextCodec> #include "mybuttonwindow.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForName("System")); //消除乱码 MyButtonWindow buttonWindow; buttonWindow.show(); return a.exec(); }加载的小图标根据自己的需求添加。
本人测试的代码结果如下所示:
好吧,顺便附上我测试的代码