ошибка при попытке установить текст в qTextEdit

Я использую 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

Вы знаете, почему это происходит со мной?

2

Решение

По какой-то таинственной причине позиция курсора не обновляется правильно, когда вы устанавливаете новый контент, а старый курсор указывает на выход за пределы нового контента. Это вызывающе ошибка в 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);
}
1

Другие решения


По вопросам рекламы [email protected]