我正在尝试使用QTextEdit输出QstringList
e.g
void CTextBox::AddText(QStringList list, QStringList animList)
{
//CGraphics* graphics = CGraphics::GetInst();
//QStandardItem *baseItem = new StandardItem("Hello");
//textBrowser = new QTextEdit();
standardModel->clear();
rootNode = standardModel->invisibleRootItem();
treeView->setModel(standardModel);
QString string;
//std::string = list[i].
QDataStream* data = new QDataStream;
int j = 0;
int k = 0;
for (int i = 0; i < (list.size()); i++)
{
//string += list[i];
//string += hierarchyList[i];
// textBrowser->setText(string);
string.append(list[i]);
//textBrowser->append(list[i]);
if (list[i].contains("Is Parent"))
{
standardItems[j] = new QStandardItem(list[i-1]);
/*for (int k = 0; k < j; k++)
{
if (standardItems[j]->contains(st))
{
}
}*/
rootNode->appendRow(standardItems[j]);
//k = j;
j++;
}
else if (list[i].contains("inherits from"))
{
standardItems[j] = new QStandardItem(list[i-1]);
for(k = 0; k < j; k++)
{
if (standardItems[k]->text() ==list[i+1])
{
standardItems[k]->appendRow(standardItems[j]);
break;
}
}
//standardItems[k]->appendRow(standardItems[j]);
j++;
}
//textBrowser->setText("Hello");
}
for (int i = 0; i < (animList.size()); i++)
{
string.append(animList[i]);
//textBrowser->append(animList[i]);
}
textBrowser->setText(string);
treeView->setModel(standardModel);
//CGraphics* graphics = CGraphics::GetInst();
//graphics->Render();
}
但是列表的大小绝对可以达到1700行。大约400ish附加后,我收到此错误消息。
ipodGuiLoaderQT.exe中0x65154715处的未处理异常:0xC0000005: 访问冲突读取位置0xfdfdfe11。
这通常表示存在内存溢出,但我无法控制textBrowser的内存,或者我是否处于完全错误的轨道上?
修改
我做了一个小改动,我现在将列表元素添加到名为string的Qstring中,然后在循环结束时设置文本。
e.g
textBrowser->setText(string);
我仍然遇到同样的问题。
答案 0 :(得分:1)
您确定要添加到ith
的{{1}}元素是有效的列表元素吗?使用QTextEdit
运算符时要小心:
返回索引位置i处的项目作为可修改的引用。我必须 是列表中的有效索引位置(即,0&lt; = i&lt; size())。
如果[]
大于或等于i
,那么这可能是您崩溃的根源。
为了检查list.count()
是否存在问题,您可以尝试以下操作:
QTextEdit
如果上述代码导致异常(我发现它不可能),请告诉我们。否则,列表本身应该存在问题,或者更可能是处理列表的代码。
编辑:关于您的代码的一些问题
for (unsigned i=0; i<50000; i++)
textBrowser->append("Dummy String Row");
如果standardItems[j] = new QStandardItem(list[i-1]);
i==0
无效且可能导致崩溃
list[-1]
同样,如果if (standardItems[k]->text() ==list[i+1])
i==list.count()-1
不是有效索引,那么另一个异常原因
循环使用i+1
要获取名为QStringList
的{{1}}的所有元素并将其显示在QStringList
上,您可以执行以下操作:
list
这样可以正常工作。
答案 1 :(得分:0)
我在这里打开一个答案,不要重载评论列表:)
如果您确定问题不是来自list
的内容,那么它可能与standardItems
数组有关。你能说出它是如何初始化的吗?也许你试图从它的界限中访问它