私はテキストエディターを作成しています.1つの目的は、ユーザーがマウスでテキストを選択/強調表示したときに表示されるコンテキストメニューを作成することです。これにより、さらにオプションが表示されます。ユーザーが選択したテキストを他の QString オブジェクトに読み込むことができることが重要です。
これまでのところ、文書内で QTextCursor を適切に配置してテキストを選択するために、mousePressEvent と mouseReleaseEvent をオーバーライドしてこれを繰り返し実行しようとしました。
コードは次のとおりです。
void MainWindow::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
qDebug() << "left button clicked";
if (event->button() == Qt::RightButton)
qDebug() << "right button clicked";
txtcur = ui->textEdit->cursorForPosition(event->pos());
txtcur.setPosition(txtcur.selectionStart(), QTextCursor::MoveAnchor);
qDebug() << txtcur.anchor();
}
void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
txtcur = ui->textEdit->cursorForPosition(event->pos());
txtcur.setPosition(txtcur.selectionEnd(), QTextCursor::KeepAnchor);
txtcur.select(QTextCursor::WordUnderCursor);
if (txtcur.hasSelection())
{
qDebug() << "text selected";
qDebug() << "text selected";
// create context menu
}
}
いくつかのテストの後、QTextEditウィジェットでの左クリックが無視されているか、テキストを選択できない他の機能によって消費されていることがわかりましたが、右クリックは正常に機能しているように見え、QTextCursorの位置を移動できますが、明らかに選択できませんなんでも。
このアプローチがうまくいかない場合の進め方がわからないので、アドバイスをいただければ幸いです。
ありがとう。