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