首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Qlineedit中字体大小的自动调整

Qlineedit中字体大小的自动调整
EN

Stack Overflow用户
提问于 2019-03-17 20:58:25
回答 1查看 148关注 0票数 0

我想在Qt5中使用QLineEdit来做这件事:

当我使用函数f()QLineEdit对象中设置特定的文本时,我希望在一秒钟后文本的字体大小会自动变小。

例如:

代码语言:javascript
运行
复制
QLineEdit* edit;

void f()
{
    edit->setText("good");
}  

我希望在我使用f()后的一段时间,文本"good"的字号会自动变小。

如何做到这一点?非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2019-03-20 00:10:33

代码语言:javascript
运行
复制
#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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55207308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档