我想在Qt5中使用QLineEdit
来做这件事:
当我使用函数f()
在QLineEdit
对象中设置特定的文本时,我希望在一秒钟后文本的字体大小会自动变小。
例如:
QLineEdit* edit;
void f()
{
edit->setText("good");
}
我希望在我使用f()
后的一段时间,文本"good"
的字号会自动变小。
如何做到这一点?非常感谢!
发布于 2019-03-20 00:10:33
#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并启动计时器,该计时器将字体大小从STARTSIZE逐渐减小到ENDSIZE。
https://stackoverflow.com/questions/55207308
复制相似问题