Qt::QCheckBoxTest操作
前言:
本文操作均为在vs2015+QT5.9.5版本中执行
头文件:qcheckboxtest.h
#pragma once
#include <QtWidgets/QWidget>
#include "ui_qcheckboxtest.h"
class QCheckBoxTest : public QWidget
{
Q_OBJECT
public:
QCheckBoxTest(QWidget *parent = Q_NULLPTR);
public slots:
void Click(bool check);
void Toggle(bool check);
void Test();
private:
Ui::QCheckBoxTestClass ui;
};
UI文件:ui_qcheckboxtest.h
/********************************************************************************
** Form generated from reading UI file 'qcheckboxtest.ui'
**
** Created by: Qt User Interface Compiler version 5.9.5
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_QCHECKBOXTEST_H
#define UI_QCHECKBOXTEST_H
#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QCheckBox>
#include <QtWidgets/QGroupBox>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_QCheckBoxTestClass
{
public:
QWidget *widget;
QCheckBox *checkBox6;
QCheckBox *checkBox4;
QCheckBox *checkBox5;
QGroupBox *groupBox;
QCheckBox *checkBox3;
QCheckBox *checkBox1;
QCheckBox *checkBox2;
QCheckBox *checkBox7;
QPushButton *TeseButton;
void setupUi(QWidget *QCheckBoxTestClass)
{
if (QCheckBoxTestClass->objectName().isEmpty())
QCheckBoxTestClass->setObjectName(QStringLiteral("QCheckBoxTestClass"));
QCheckBoxTestClass->resize(813, 625);
widget = new QWidget(QCheckBoxTestClass);
widget->setObjectName(QStringLiteral("widget"));
widget->setGeometry(QRect(400, 140, 211, 171));
checkBox6 = new QCheckBox(widget);
checkBox6->setObjectName(QStringLiteral("checkBox6"));
checkBox6->setGeometry(QRect(40, 100, 111, 41));
checkBox4 = new QCheckBox(widget);
checkBox4->setObjectName(QStringLiteral("checkBox4"));
checkBox4->setGeometry(QRect(40, 20, 111, 41));
checkBox4->setAutoExclusive(false);
checkBox5 = new QCheckBox(widget);
checkBox5->setObjectName(QStringLiteral("checkBox5"));
checkBox5->setGeometry(QRect(40, 60, 111, 41));
groupBox = new QGroupBox(QCheckBoxTestClass);
groupBox->setObjectName(QStringLiteral("groupBox"));
groupBox->setGeometry(QRect(150, 140, 221, 171));
checkBox3 = new QCheckBox(groupBox);
checkBox3->setObjectName(QStringLiteral("checkBox3"));
checkBox3->setGeometry(QRect(40, 100, 111, 41));
checkBox1 = new QCheckBox(groupBox);
checkBox1->setObjectName(QStringLiteral("checkBox1"));
checkBox1->setGeometry(QRect(40, 20, 111, 41));
checkBox1->setAutoExclusive(false);
checkBox2 = new QCheckBox(groupBox);
checkBox2->setObjectName(QStringLiteral("checkBox2"));
checkBox2->setGeometry(QRect(40, 60, 111, 41));
checkBox7 = new QCheckBox(QCheckBoxTestClass);
checkBox7->setObjectName(QStringLiteral("checkBox7"));
checkBox7->setGeometry(QRect(180, 370, 101, 31));
TeseButton = new QPushButton(QCheckBoxTestClass);
TeseButton->setObjectName(QStringLiteral("TeseButton"));
TeseButton->setGeometry(QRect(60, 370, 75, 23));
retranslateUi(QCheckBoxTestClass);
QMetaObject::connectSlotsByName(QCheckBoxTestClass);
} // setupUi
void retranslateUi(QWidget *QCheckBoxTestClass)
{
QCheckBoxTestClass->setWindowTitle(QApplication::translate("QCheckBoxTestClass", "QCheckBoxTest", Q_NULLPTR));
checkBox6->setText(QApplication::translate("QCheckBoxTestClass", "CheckBox6", Q_NULLPTR));
checkBox4->setText(QApplication::translate("QCheckBoxTestClass", "CheckBox4", Q_NULLPTR));
checkBox5->setText(QApplication::translate("QCheckBoxTestClass", "CheckBox5", Q_NULLPTR));
groupBox->setTitle(QApplication::translate("QCheckBoxTestClass", "GroupBox", Q_NULLPTR));
checkBox3->setText(QApplication::translate("QCheckBoxTestClass", "CheckBox3", Q_NULLPTR));
checkBox1->setText(QApplication::translate("QCheckBoxTestClass", "CheckBox1", Q_NULLPTR));
checkBox2->setText(QApplication::translate("QCheckBoxTestClass", "CheckBox2", Q_NULLPTR));
checkBox7->setText(QApplication::translate("QCheckBoxTestClass", "CheckBox7", Q_NULLPTR));
TeseButton->setText(QApplication::translate("QCheckBoxTestClass", "Test", Q_NULLPTR));
} // retranslateUi
};
namespace Ui {
class QCheckBoxTestClass: public Ui_QCheckBoxTestClass {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_QCHECKBOXTEST_H
主函数:main.cpp
#include "qcheckboxtest.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QCheckBoxTest w;
w.show();
return a.exec();
}
实现文件:qcheckboxtest.cpp
#include "qcheckboxtest.h"
#include <QDebug>
QCheckBoxTest::QCheckBoxTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
//控件设置:
//设置checkBox的自动排它属性;就是只能选择一个,当然得都打开此属性才行。
ui.checkBox1->setAutoExclusive(true);
ui.checkBox2->setAutoExclusive(true);
ui.checkBox3->setAutoExclusive(true);
//信号与槽绑定
connect(ui.checkBox7, SIGNAL(clicked(bool)), this, SLOT(Click(bool)));
connect(ui.checkBox7, SIGNAL(toggled(bool)), this, SLOT(Toggle(bool)));
connect(ui.TeseButton, SIGNAL(clicked()), this, SLOT(Test()));
}
//只有按下checkBox7才会响应事件
void QCheckBoxTest::Click(bool check)
{
qDebug() << "Chilck:" << check;
}
//通过按下checkBox7会响应事件,并且button按钮按下也会响应事件
void QCheckBoxTest::Toggle(bool check)
{
qDebug() << "Toggle:" << check;
}
//对checkBox状态取反,isChecked()默认设置为false
void QCheckBoxTest::Test()
{
ui.checkBox7->setChecked(!ui.checkBox7->isChecked());
}