前言:这一节我们学习下继续运用信号与槽机制的应用,也就是复选框的应用。
什么是复选框
就是可以勾选的框,我们在装软件时就经常遇到,就是问你是否同意这个协议:
在qt中复选框的英文是checkbox。
复选框常用的函数成员
1.stateChanged(int)
这个是signal函数,即打勾或不打勾的状态发生改变的信号
2.isChecked()
这个函数用于检查是否打勾,若打了勾,返回true,没打返回false。
补充:pushbutton的另一个成员函数:setEnabled(true)和setEnabled(false),前面那个使这个按钮可以被操作,后面那个使这个按钮变成灰的,不能按。
实例
我们写一个例子,他的形式为:
说明:当勾选时,下一步的按钮可以被点,没有选中就为灰的。
第一步:
在ui下布局:
补充:可以在右下角的属性中设置复选框的默认状态,是打开还是关闭(就是这个checked)。
第二步:选中按钮,在属性栏将他使能关闭。
第三步:写代码:
头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
private slots:
int oncheckchange();
};
#endif // MAINWINDOW_H
源文件:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect (
ui->checkBox,//信号的触发者为复选框
SIGNAL(stateChanged(int)),//信号就是复选框的状态改变
this,
SLOT(oncheckchange())//槽函数就是改变按钮状态
);
}
MainWindow::~MainWindow()
{
delete ui;
}
int MainWindow::oncheckchange()
{
if(ui->checkBox->isChecked()==true)//复选框被打勾
{
ui->pushButton->setEnabled(true);//将按钮使能打开
}
else
{
ui->pushButton->setEnabled(false);//将按钮使能关闭
}
return 0;
}
想法:因为我们还有一个按钮取消,我们可以设置当取消被按下时,窗口关闭。试试看0.0.
思路:再写一个connect,里面的对象是取消按钮。然后写个槽函数,用于关闭主窗口。这个函数就是:
QApplication::exit();
完整代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect (
ui->checkBox,
SIGNAL(stateChanged(int)),
this,
SLOT(oncheckchange())
);
connect (
ui->quxiao,
SIGNAL(clicked(bool)),
this,
SLOT(guanbi())
);
}
MainWindow::~MainWindow()
{
delete ui;
}
int MainWindow::oncheckchange()
{
if(ui->checkBox->isChecked()==true)
{
ui->pushButton->setEnabled(true);
}
else
{
ui->pushButton->setEnabled(false);
}
return 0;
}
void MainWindow::guanbi()
{
QApplication::exit();
}