全部
在here中,我提出了一个覆盖keyPressEvent的建议,以便给出有关QLineEdit的最大长度限制的通知。
但是,我相信如果我尝试使用Ctrl + V或上下文菜单从键盘粘贴文本,将无法正常工作。
在这种情况下,最好的方法是什么?
再过一次:我正在寻找一种方法来通知用户最大长度限制。
TIA !!
答案 0 :(得分:1)
5.12之前:
处理textChanged
的{{1}}信号。
QLineEdit
现在在插槽中,查找剪贴板文字。 如果两者相同,则这是一种粘贴操作。 然后验证您的长度。 下面是Soem伪代码。
connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(lineEditTextCahnged(const QString&)));
版本5.12:
处理void yourclass::lineEditTextCahnged(const QString& text)
{
QClipboard *pBoard = QApplication::clipboard();
QString clipStr = pBoard->text();
if (clipStr == text)
{
//THEN IT IS SOME PASTE ACTION.
//HANDLE YOUR LENGTH VALIDATION.
}
}
信号
文档说
注意:如果部分 文本被接受,但不是全部。例如,如果有一个 设置的最大长度和剪贴板文本长于最大长度 粘贴时的长度。