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);
コードのこの部分は、次いで、選択の終わりに移動するが、第二のようMoveMode
を指定することによって、古い位置で選択アンカーを残し、setPosition
を使用して、選択の開始位置にカーソルを移動させますパラメータ。
最後の行では、エディットコントロールの中に選択範囲が表示されるように設定されているため、選択したテキストで何らかの操作をしたい場合はスキップする必要があります。
正確な位置がわからない場合は、movePosition
が役に立ちます。右に1語、下に1行など、various waysにカーソルを移動できます。
は、使用してみてください:
QTextCursor cur = tw->textCursor();
cur.clearSelection();
tw->setTextCursor(cur);
私は同様の問題が発生しました。 Windows 10では、「ドラッグ/移動」のバグがある可能性があります。コンパイラオプションとしてQT_NO_DRAGANDDROPを使用しています。QTextEditでのテキスト選択がmorkではなくなりました。
ソリューション:
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);
}
}
参照:
2件の既存の回答選択領域を更新する方法
? –