c++ - Qlineedit中字体大小的自动调整
问题描述
我想QLineEdit
在 Qt5 中使用来做到这一点:
当我使用函数f()
在对象中设置特定文本时QLineEdit
,我希望在一秒钟后文本的字体大小会自动变小。
例如:
QLineEdit* edit;
void f()
{
edit->setText("good");
}
我想在我使用一段时间后f()
,文本的字体"good"
大小会自动变小。
怎么做?非常感谢!
解决方案
#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。
推荐阅读
- android - Android studio 4.1.0 没有私有资源覆盖警告
- python - 海龟碰撞蟒
- google-cloud-platform - 如何计算 GCP 中的实例小时数?
- powershell - CSOM PowerShell 从 SharePoint 中删除多个文件
- reactjs - 如何告诉 ApolloClient 重新获取特定查询并重新呈现组件?
- python - 如何在 scipy.signal.cwt 中为 morlet 小波指定 s 和 w?
- flutter - 颤振DropDownButton删除箭头图标?
- java - Spring Batch + Hibernate:解决多对多数据迁移
- reactjs - useState 在异步之前加载不更新
- java - 如何将数据从 JSP 插入 MySQL 数据库?