我正在制作一个文本编辑器,一个目标是创建一个上下文菜单,当用户用鼠标选择/突出显示文本时会出现该菜单,这将带来一些进一步的选项。重要的是,我可以将用户选择的文本读入其他 QString 对象。
到目前为止,我已经尝试通过覆盖 mousePressEvent 和 mouseReleaseEvent 来重复执行此操作,以便在文档中适当地定位 QTextCursor 并选择文本。
代码如下:
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 的位置但显然无法选择任何事物。
如果这种方法不起作用,我不确定如何进行,所以任何建议都将不胜感激。
谢谢。