QTabWidget中添加了两个QWidget,其中第一个QWidget中放有QTextBrowser控件,第二个QWidget中方有QTextEdit控件,且TextEdit控件中含有文字,每当程序重新运行,在QTextBrowser页面单击一下鼠标再切到QTextEdit页面,QTextEdit的光标都会到控件的开始位置,如图

但实际设置的是光标在结束位置,即期望达到的效果如图

如果不单击一下鼠标则不会有问题。不知道这是怎么回事?
QTabWidget中添加了两个QWidget,其中第一个QWidget中放有QTextBrowser控件,第二个QWidget中方有QTextEdit控件,且TextEdit控件中含有文字,每当程序重新运行,在QTextBrowser页面单击一下鼠标再切到QTextEdit页面,QTextEdit的光标都会到控件的开始位置,如图


阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
你遇到的问题是:在使用 QTabWidget 时,单击第一个子界面后,第二个子界面的光标位置会变为开始位置。
解决方案:
可以使用 QTextEdit::cursorPositionChanged 信号来监听光标位置的变化,然后在信号处理函数中,使用 QTextEdit::moveCursor 方法将光标位置设置为之前的位置。
例如:
QTextEdit *textEdit = new QTextEdit();
textEdit->moveCursor(QTextCursor::End); // 设置光标位置到结尾
connect(textEdit, &QTextEdit::cursorPositionChanged, this, [textEdit](QTextCursor::MoveOperation op, QTextCursor::State state) {
if (op == QTextCursor::MoveOperation::MoveToStart) {
textEdit->moveCursor(QTextCursor::Start); // 将光标位置设置为开始位置
}
});
这样,当你单击第一个子界面时,第二个子界面的光标位置就不会变为开始位置了。