我想在Qt5中使用QLineEdit
来做到这一点:
当我使用函数f()
在QLineEdit
对象中设置特定文本时,希望一秒钟后文本的字体大小会自动变小。
例如:
QLineEdit* edit;
void f()
{
edit->setText("good");
}
我想在使用f()
之后的一段时间内,文本"good"
的字体大小会自动变小。
该怎么做?非常感谢你!
答案 0 :(得分:0)
#ifndef OWNTEXTEDIT_H
#define OWNTEXTEDIT_H
#include <qlineedit.h>
#include <qtimer.h>
#define STARTSIZE 30
#define SPEED 50
#define ENDSIZE 15
class OwnTextEdit : public QLineEdit {
Q_OBJECT
public slots:
void setText(const QString& text) {
QLineEdit::setText(text);
m_timer->start(SPEED);
m_size = STARTSIZE;
setFont(QFont(font_name, m_size));
}
public:
OwnTextEdit(QWidget *parent = 0) {
setMinimumSize(QSize(500, 100));
m_timer = new QTimer(this);
QObject::connect(m_timer, &QTimer::timeout, this, &OwnTextEdit::decreaseSize);
};
~OwnTextEdit() {};
private slots:
void decreaseSize() {
if (m_size == ENDSIZE) m_timer->stop();
m_size--;
setFont(QFont(font_name, m_size));
};
private:
QTimer* m_timer;
unsigned int m_size = STARTSIZE;
const char* font_name = "Arial";
};
#endif // OWNTEXTEDIT_H
这是我在这里的第一个评论。希望我能理解您的问题。 如果您打算突然更改fontSize,则应该可以轻松更改其行为。
我继承了QLineEdit。 我重写的方法setText调用QLineEdit :: setText并启动Timer,该计时器将字体大小从STARTSIZE逐渐减小到ENDSIZE。