QT自学笔记(5)

来源:互联网 发布:命运 定数 知乎 编辑:程序博客网 时间:2024/06/11 00:05

前言:这一节我们学习下继续运用信号与槽机制的应用,也就是复选框的应用。


什么是复选框

就是可以勾选的框,我们在装软件时就经常遇到,就是问你是否同意这个协议:

这里写图片描述

在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_OBJECTpublic:    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();}
原创粉丝点击