我试图在qTextEdit中设置文本时出错

时间:2014-10-26 21:44:15

标签: c++ qt qtextedit qtwidgets qtextcursor

我正在使用Qt 5.3和MSVC2013。以下是我的代码的一部分:

mainwindow.cpp

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    setupUi(this);
    connect(okButton,SIGNAL(clicked()),SLOT(onOKClicked()));
}

void MainWindow::onOKClicked(){
    arr0.Put(addBox->value(),posBox->value());
    QString str = arr0.GetArrText();
    arrayContent->setText(str);
}

变量“str”的内容没有问题,因为它与qDebug一起使用。

arrayContent变量是QTextEdit。当我尝试使用setText()时,我收到以下错误:

QTextCursor::setPosition: Position '7' out of range

你知道为什么会发生这种情况吗?

1 个答案:

答案 0 :(得分:1)

由于某些神秘的原因,当您将新内容和旧光标指向超出新内容时,光标位置未正确更新。这肯定是Qt中的一个错误。

作为解决方法,您可以尝试:

void MainWindow::onOKClicked(){
    arr0.Put(addBox->value(),posBox->value());
    QString str = arr0.GetArrText();
    arrayContent->moveCursor(QTextCursor::Start);
    arrayContent->setText(str);
    arrayContent->selectAll(); // or arrayContent->moveCursor(QTextCursor::End);
}

<小时/> 或者您可以尝试直接在文档上操作:

void MainWindow::onOKClicked(){
    arr0.Put(addBox->value(),posBox->value());
    QString str = arr0.GetArrText();
    arrayContent->moveCursor(QTextCursor::Start);
    arrayContent->document()->setPlainText(str);
    arrayContent->selectAll(); // or arrayContent->moveCursor(QTextCursor::End);
}