c++ - 计算 QLineEdit 的最大长度以适应其宽度

标签 c++ qt qlineedit

我创建了一些 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);

但是,以下是您可能不希望在生产代码中使用的一些原因:

  1. 样式表 - 当您的设计师为编辑设置 14 像素边框时会发生什么?
  2. 调整大小 - 每次调整大小时都必须进行调整,我发现在实践中这是一件非常难以跟踪的事情。如果每次调整 GUI 大小时它都会中断,那么它就不是一个有用的功能。
  3. 内容 - 行编辑的宽度,尤其是用户可以输入文本的行的宽度,在逻辑上与用户可能需要输入的文本长度无关。这可能会成为让您的用户感到沮丧的任意约束。没有人喜欢水平滚动,但有时有用例。

关于c++ - 计算 QLineEdit 的最大长度以适应其宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36353763/

相关文章:

c++ - 了解 C++ 析构函数在派生类中的行为

qt - PropertyAction 不适用于 "AnchorChanges"元素

c++ - QT QNetworkAccessManager 和信号

c++ - Qt widgets 应用程序中主窗口第一次可见时如何显示对话框?

c++ - 自定义 QLineEdit

c++ - 是否真的使用了使用指针类型实例化模板的能力?

c++ - 查找数组中缺失的数字

css - 如何在 QLineEdit 和 QPushButton 中只为边框的一侧设置样式表?

qt - QLineEdit 只接受一个字符/数字

c++ - 无法从我的添加函数之外的链表头部计算数据