GREGGXU 2025-07-04 16:38 采纳率: 0%
浏览 9

QTabWidget单击第一个子界面会使第二个子界面的光标位置变为开始位置

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

img


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

img


如果不单击一下鼠标则不会有问题。不知道这是怎么回事?

  • 写回答

6条回答 默认 最新

  • 阿里嘎多学长 2025-07-04 16:38
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    QTabWidget单击第一个子界面会使第二个子界面的光标位置变为开始位置

    你遇到的问题是:在使用 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); // 将光标位置设置为开始位置
        }
    });
    

    这样,当你单击第一个子界面时,第二个子界面的光标位置就不会变为开始位置了。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月4日