gpt4 book ai didi

qt - 将 QLineEdit 的宽度调整为内容(并且比预期的要短)

转载 作者:行者123 更新时间:2023-12-04 16:07:56 51 4
gpt4 key购买 nike

我遇到了与 this 类似的问题问题,但这个问题的答案对我来说不太适用。

我有一个带有一小段文本的 QLineEdit 元素,我希望根据内容调整该元素的宽度,以便文本正好适合该元素,没有额外的空格或隐藏的字母。我为此使用了 QFontMetrics,但结果好像有一点偏移,所以最左边的字母被部分隐藏,而右边有一点空间:

QLineEdit too short

我的代码如下:

#include <QtWidgets>

int main ( int argc, char** argv) {
QApplication app (argc, argv);
QLineEdit *lineEdit = new QLineEdit;

QString text = "Hello, world!";
lineEdit->setText(text);
QFontMetrics fm = lineEdit->fontMetrics();
int w = fm.boundingRect(text).width();
// int w = fm.width(text);
lineEdit->setFixedWidth(w);
lineEdit->show();

return app.exec();
}

使用 setAlignment 没有任何区别。

最佳答案

QFontMetrics 没有考虑小部件的依赖于样式的框架(这里是提供 3D 效果的部分),这增加了它的总大小。对于一般解决方案,您必须深入研究 QStyle::PixelMetric并根据小部件类型查询框架的额外边距。请注意,有时您必须将左右/顶部和底部框架的值加倍。

一个简单的解决方案,但不能通过样式移植(因此与平台无关)是通过反复试验找到所用样式的恒定边距,并将其添加到宽度。示例:

lineEdit->setFixedWidth(fm.boundingRect(text).width() + 6);

关于qt - 将 QLineEdit 的宽度调整为内容(并且比预期的要短),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48031291/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com