0

我正在QPlainTextEdit用一种编程语言(Basic)以 , 显示文本,该语言在标识符的末尾可以有一个特定于类型的字符;例如MyString$StartChar@。因此,如果用户通过双击选择这样的标识符,我希望将特定于类型的字符包含在选择中。这是我的代码:

QChar last = document() -> characterAt (end - 1) ;
QChar next = document() -> characterAt (end) ;
if (isalnum (last.unicode())) switch (next.unicode())
  {
  case '@': case '%': case '!': case '&': case '$': case '^': case '#':
    moveCursor (QTextCursor::Right, QTextCursor::KeepAnchor) ;
    break ;
  }

这曾经工作得很好。但是现在我已经升级到 Qt 5.12(我认为是从 Qt 5.4),调用moveCursor不再导致选择包含额外的字符。有谁知道为什么这种行为发生了变化,我能做些什么?

4

1 回答 1

0

发布的代码按预期工作。似乎发生了变化的是,双击后,QPlainTextEdit触发mouseReleaseEvent; 正是这个事件在我的代码中没有得到正确处理。

我已经解决了这个问题,现在一切正常。

于 2019-04-03T14:14:58.930 回答