Qt 将最大长度应用于QLineEdit
全部, 在年,我得到了一个覆盖keyPressEvent的建议,以便通知QLineEdit的最大长度限制 然而,我相信如果我尝试使用Ctrl+V或上下文菜单从键盘粘贴文本,这将不起作用 在这种情况下,最好的方法是什么 再一次:我正在寻找一种方法来通知用户最大长度限制 蒂娅 5.12之前: 处理QLineEdit的textChanged信号 现在在插槽中,查找剪贴板文本。 如果两者相同,则这是一种粘贴操作。 然后验证您的长度。 下面是Soem psudo代码Qt 将最大长度应用于QLineEdit,qt,qlineedit,Qt,Qlineedit,全部, 在年,我得到了一个覆盖keyPressEvent的建议,以便通知QLineEdit的最大长度限制 然而,我相信如果我尝试使用Ctrl+V或上下文菜单从键盘粘贴文本,这将不起作用 在这种情况下,最好的方法是什么 再一次:我正在寻找一种方法来通知用户最大长度限制 蒂娅 5.12之前: 处理QLineEdit的textChanged信号 现在在插槽中,查找剪贴板文本。 如果两者相同,则这是一种粘贴操作。 然后验证您的长度。 下面是Soem psudo代码 void yourclass::lin
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.
}
}
5.12版:
句柄无效QLineEdit::inputRejected信号
文件上说
注:当部分信号发生故障时,该信号仍将发出
文本被接受,但并非所有文本都被接受。例如,如果有
设置了最大长度,剪贴板文本长于最大长度
粘贴时的长度
覆盖更多事件,以捕获粘贴发生的所有方式?如果您无法找到正确的事件键盘粘贴、上下文菜单粘贴、拖放(至少),您可以使用带有调试打印的事件过滤器查看小部件获得的确切事件。您还可以将“最大长度”属性设置为比所需的实际最大值长,然后捕获textChanged信号。然后,如果文本太长,您可以通知用户并截断它。@hyde。大概我需要QLineEdit::paste插槽,但我不知道该怎么做。“也许会有不同的东西?”海德,我接受了奈杜的想法。我甚至试图覆盖textEdited虚拟函数。没有什么还有什么吗?这个信号是5点12分以来的新信号。如果你从我引用的链接中查看OP,我要求的是5.11或更低版本。@Igor你能试试更新的anwer吗?。检查它是否有效。从谷歌搜索粘贴处理中得到了这个想法。我会试试的。但我知道简单的键盘输入不会触发信号。也许它可以用于剪贴板粘贴?我会让你知道的。今天晚些时候或明天。
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.
}
}