我需要使用C ++和Qt5定期更改QPushButton
的属性(宽度,高度,背景,文本等)。这样做的最佳方式是什么?
答案 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...
我告诉你几种做同样事情的方法。现在您可以选择要使用的内容。