有像textEdit->textCursor()->selectionStart()
和textEdit->textCursor()->selectionEnd()
功能,但没有功能setSelectionStart
,setSelectionEnd
。QTextEdit。如何手动选择文本?
有什么办法可以手动选择文本的一部分吗?
有像textEdit->textCursor()->selectionStart()
和textEdit->textCursor()->selectionEnd()
功能,但没有功能setSelectionStart
,setSelectionEnd
。QTextEdit。如何手动选择文本?
有什么办法可以手动选择文本的一部分吗?
QTextCursor c = textEdit->textCursor();
c.setPosition(startPos);
c.setPosition(endPos, QTextCursor::KeepAnchor);
textEdit->setTextCursor(c);
这段代码将光标移动到使用setPosition
选择的开始位置,然后将其移动到所述选择的端部,而是通过指定MoveMode
作为第二叶选择锚点在老位置参数。
最后一行将选择内容设置为在编辑控件中可见,所以如果您只想对选定文本执行某些操作,则应该跳过该选择。
此外,如果您没有确切位置,movePosition
会有帮助:您可以将光标移动到various ways,例如向右或向下移动一行。
尝试使用:
QTextCursor cur = tw->textCursor();
cur.clearSelection();
tw->setTextCursor(cur);
我遇到了类似的问题。 在Windows 10中,可能存在“拖/移动”的错误。我们使用QT_NO_DRAGANDDROP作为编译器选项,这使得QTextEdit中的文本选择不再被使用。
解决方案:
void QTextEditEx::mouseMoveEvent(QMouseEvent *event)
{
QTextEdit::mouseMoveEvent(event);
if (event->buttons() & Qt::LeftButton)
{
QTextCursor cursor = textCursor();
QTextCursor endCursor = cursorForPosition(event->pos()); // key point
cursor.setPosition(pos, QTextCursor::MoveAnchor);
cursor.setPosition(endCursor.position(), QTextCursor::KeepAnchor);
setTextCursor(cursor);
}
}
void QTextEditEx::mousePressEvent(QMouseEvent *event)
{
QTextEdit::mousePressEvent(event);
if (event->buttons() & Qt::LeftButton)
{
QTextCursor cursor = cursorForPosition(event->pos());
// int pos; member variable
pos = cursor.position();
cursor.clearSelection();
setTextCursor(cursor);
}
}
参考:
如何更新选择区域? – 2015-12-19 10:41:24