我正在使用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
你知道为什么会发生这种情况吗?
答案 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);
}