我创建了一些 QLineEdit
,它们具有不同的大小。
我想设置它们的最大长度以适应它们的宽度。
更具体地说:例如,宽度为50,我只允许输入大约7个字符,因为每个字符的大小不同。
如何准确计算所需的最大长度?
最佳答案
您可以根据 myLineEdit
的宽度设置限制,这样它将能够通过执行以下操作来容纳达到该限制的所有字符:
#include <QFontMetrics>
#include <QLineEdit>
QLineEdit myLineEdit;
// get max character width of the line edit's font
int maxWidth = QFontMetrics(myLineEdit->font()).maxWidth();
// find the character limit based on the max width
int charlimit = myLineEdit.width() / maxWidth;
// set the character limit on the line edit
myLineEdit->setMaxLength(charlimit);
但是,以下是您可能不希望在生产代码中使用的一些原因:
- 样式表 - 当您的设计师为编辑设置 14 像素边框时会发生什么?
- 调整大小 - 每次调整大小时都必须进行调整,我发现在实践中这是一件非常难以跟踪的事情。如果每次调整 GUI 大小时它都会中断,那么它就不是一个有用的功能。
- 内容 - 行编辑的宽度,尤其是用户可以输入文本的行的宽度,在逻辑上与用户可能需要输入的文本长度无关。这可能会成为让您的用户感到沮丧的任意约束。没有人喜欢水平滚动,但有时有用例。
关于c++ - 计算 QLineEdit 的最大长度以适应其宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36353763/