QT按钮类及定时器应用

一 按钮类

点击按钮:QPushButton QToolButton

单选按钮:QRadioButton

复选按钮:QCheckBox

对于按钮类来说,使能(enable)属性使用比较常见。该属性也有一对接口:set/get

QT按钮类及定时器应用_第1张图片

ui->testButton->setEnabled(false);
ui->testButton->isEnabled();

对于按钮来说,使用一个按钮来实现两种状态,这种逻辑也是比较常见,比如:照明开关

void MainWindow::on_ledButton_clicked()
{

    if(!isLedState)
    {
        ui->ledButton->setText("开灯");
        isLedState = true;

        //功能
    }else {
       ui->ledButton->setText("关灯");
       isLedState = false;

       //功能
    }
}

    //利用控件中文本内容的比较
    if(ui->ledButton->text() == "关灯")
    {

        ui->ledButton->setText("开灯");
    }else if(ui->ledButton->text() == "开灯")
    {
        ui->ledButton->setText("关灯");
    }
    }

二 定时器--- QTimer

非UI控件从致可以从三个方面来进行学习:概念 基本使用语法 常用的信号和槽

2.1 基本概念

The QTimer class provides repetitive and single-shot timers,该类可以实现重复或者单次定时,如果是重复的定时,那么,用户要设置一个超时时间,超时时间一到,就会发送相应信号,然后对应槽函数,就会被调用。

QT按钮类及定时器应用_第2张图片

2.2 定时器基本使用

案例1:实现定时器的计数器

第一步:包含头文件和创建定时器对象

#include 

QTimer* timer; //声明定时器

在构造函数中,初始化定时器对象
  //[1] 初始化定时器对象
    timer = new QTimer;

第二步:创建timeout信号相关的槽,并建立起来连接

头文件:
private slots:
    //根据需求来定义槽函数,void timeout(),槽函数不能有参数

    void counter();
源文件:
void MainWindow::counter()
{
     static int i = 0;
     ui->countLabel->setText(QString::number(i));
     i++;
}

第三步:启动定时器,它才可以计时

void MainWindow::on_startButton_clicked()
{
    // timer->start(1000);//在启动定时器时,设置timeout  毫秒级
    timer->start();
}

void MainWindow::on_stopButton_clicked()
{
    timer->stop(); //停止定时器
}

案例2:手机APP启动时,播放广告(3S)

void

singleShot(int msec, Functor functor)

int msec ----->指定一个延迟时间,时间到,

Functor functor ----》该槽函数会被执行

[static] void QTimer::singleShot(int msec, Functor functor)

该函数是一个静态成员函数

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //进入广告时间
    QTimer::singleShot(3000,this,SLOT(startMainApp()));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::startMainApp()
{
   //启动主程序界面

    TwoWindow* tw = new TwoWindow;

    tw->show();
    this->close();

}

你可能感兴趣的:(笔记,QT,c++,c++)