使用Qt5定期更改按钮属性

时间:2014-09-07 04:37:02

标签: c++ qt5 qpushbutton

我需要使用C ++和Qt5定期更改QPushButton的属性(宽度,高度,背景,文本等)。这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

您应该使用QTimer

#include <QTimer>

//...

QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(1000);

update()广告位中,您可以更改所有内容。

宽度,高度 - resize()方法。

背景 - 也许是styleSheet

text - setText()方法

编辑:

但无论如何,你可以使用它,如果你真的需要这个。下一个代码以类似的方式工作。它是用QMainWindow子类

编写的

*的.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QBasicTimer>
#include <QTimerEvent>
#include <QDebug>




namespace Ui {

class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

signals:

    void myTimeout(int, int);

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

    void on_quitButton_clicked();

    void update(int w, int h)
    {
        qDebug() << w << h;
        qDebug() << "update slot";
    }

protected:
    virtual void timerEvent(QTimerEvent*);

private:

    Ui::MainWindow *ui;

    QBasicTimer *tmr;
    int width, height;

};

#endif // MAINWINDOW_H

*。CPP

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



    tmr = new QBasicTimer;
    height = 0;
    width = 0;
    connect(this,SIGNAL(myTimeout(int,int)), this, SLOT(update(int,int)));
    tmr->start(1000,this);
}

void MainWindow::timerEvent(QTimerEvent *timer)
{
    if(timer->timerId() == tmr->timerId())
    {
    qDebug() << "timerEvent";
    //you can change buttons properties here or...
    width += 5;
    height += 5;
    emit myTimeout(width, height);
    }
    else
        QMainWindow::timerEvent(timer);
}

输出:

timerEvent 
5 5 
update slot 
timerEvent 
10 10 
update slot 
timerEvent 
15 15 
update slot 
timerEvent 
20 20 
update slot 
timerEvent 
25 25 
update slot 
and so on...

我告诉你几种做同样事情的方法。现在您可以选择要使用的内容。