- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 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/
在 C++ 的 2 线程 QT 程序中使用以下代码时,我收到此运行时错误(尽管程序继续运行): QMetaObject::invokeMethod: no such method QTextCurso
我正在尝试在我正在编写的编辑器中实现一个简单的文本搜索。一切都很好,直到出现这个问题!我正在尝试在这里实现向后搜索。过程是:向后查找主题,如果没有找到,哔一声,如果再次按下查找按钮,则转到文档末尾,重
我正在尝试向 QTextCursor 添加一条水平线,并使用以下代码更改线的粗细和颜色: QTextDocument doc=new QTextDocument(); QTextCursor *cur
有没有办法在 QPlainTextEdit 中提取相对于光标的几行文本,但只提取光标上方和下方的行,直到找到空行? 示例数据: AA BB CC DD EE FF GG HH II 案例 1:光标在
这些是我拥有的小部件, self.recipient = QTextEdit(self) self.document = QTextDocument(self) self.recipient.setD
使用 Qt 框架选择文本片段时遇到问题。例如,如果我有这份文件:“没有时间休息”。我想选择“ime for r”并从文档中删除这段文本,我应该如何使用 QTextCursor 来做到这一点?这是我的代
我用 QTextCursor 将几张图片插入到 QTextEdit 中,现在我应该如何保存这整个东西? 我的第一个想法是遍历 QTextCursor 的所有位置,但我没有找到合适的接口(interfa
因此,QTextCursor 类中的方法select(SelectionType) 只有 4 个可能的参数。 QTextCursor::Document QTextCursor::BlockUnder
我正在使用 QTextCursor.WordUnderCursor 但它没有按照我想要的方式工作,例如,如果我有: (text) 它只会给出 ( OR text OR ) 而不是我想要的 (text)
Windows 7 SP1 MSVS 2010 Qt 4.8.4 我正在使用 QTextCursor 来抓取每个 block 的文本。我使用 select(QTextCursor::BlockUnde
在 QTextEdit 对象中,假设我想知道字符在鼠标光标下的位置。 我会写... void MyQTextEditObject::mousePressEvent(QMouseEvent* mouse
我试图从 PyQt 中的非主线程发送信号,但我不知道哪里做错了!当我执行程序时,它因以下错误而失败: QObject::connect: Cannot queue arguments of type
我有一个包含 QTextDocument 的 QTextEdit,它正在使用 QTextCursor 界面以编程方式进行编辑。正在使用 QTextCursor::insertText() 编辑文档。
我是一名优秀的程序员,十分优秀!