QT自学笔记(5)

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


什么是复选框

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

这里写图片描述

在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();
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值