gpt4 book ai didi

c++ - 有可能 "update"一个 QTextCursor 吗?

转载 作者:太空宇宙 更新时间:2023-11-04 13:49:43 28 4
gpt4 key购买 nike

在 QTextEdit 对象中,假设我想知道字符在鼠标光标下的位置。

我会写...

void MyQTextEditObject::mousePressEvent(QMouseEvent* mouse_event) {
mycursor = this->textCursor();
qDebug() << "pos=" << mycursor.position();
}

... 它有效(鼠标位置从 0 变为最后一个字符的最后一个索引)但是每次事件发生时 mousePressEvent() 方法都会创建一个新光标。这让我很困扰,因为我不知道这样一个创作的“成本”。

那么,为什么不创建一个 cursor 属性并在 mousePressEvent() 中使用它呢?

类似的东西:

class MyQTextEditObject : public QTextEdit {
Q_OBJECT
public:
// [...]
QTextCursor cursor;
}

MyQTextEditObject::MyQTextEditObject(QWidget* parent) : QTextEdit(parent) {
// [...]
this->cursor = this->textCursor();
}

void MyQTextEditObject::mousePressEvent(QMouseEvent* mouse_event) {
qDebug() << "pos=" << this->cursor.position();
}

但是位置没有再变了,就好像是固定的一样。那么,有没有办法以某种方式更新光标?还是重复创建 QTextCursor 的成本微不足道?

更新:写一些像...

mycursor= this->cursorForPosition(mouse_event->pos());

... 创建一个新游标,似乎等同于:

mycursor= this->textCursor();

最佳答案

在你的第一个例子中,而不是

    mycursor = this->textCursor();
qDebug() << "pos=" << mycursor.position();

你为什么不直接称它为?

    qDebug() << "pos=" << this->textCursor().position();

因为在 python 中

    self.textCursor().position() 

有效。

此外,我不确定,但在您的第二个示例中,您可能需要使用 setTextCursor() 再次将“光标”设置为“textCursor”。

    void MyQTextEditObject::mousePressEvent(QMouseEvent* mouse_event) {
this->setTextCursor(cursor)
qDebug() << "pos=" << this->cursor.position();
}

关于c++ - 有可能 "update"一个 QTextCursor 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23984812/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com