C++ 来自Qtextedit的QtreeWidget更新层次结构
我想创建一个树状图,在侧面显示文档的层次结构 随着章节和子章节的名称的更新,当然每次文本的变化 我将此代码与信号/插槽方法一起使用:C++ 来自Qtextedit的QtreeWidget更新层次结构,c++,qt,qtreeview,qtextedit,qtreewidget,C++,Qt,Qtreeview,Qtextedit,Qtreewidget,我想创建一个树状图,在侧面显示文档的层次结构 随着章节和子章节的名称的更新,当然每次文本的变化 我将此代码与信号/插槽方法一起使用: QTreeWidgetItem* item; //int is the line number in textdocument // QMap <1 , "How Should I Organize..."> QMap <int, QString> chapters; QMap <int, QString&
QTreeWidgetItem* item;
//int is the line number in textdocument
// QMap <1 , "How Should I Organize...">
QMap <int, QString> chapters;
QMap <int, QString> subChapters;
ui->chapterTreeWidget->clear();
for(auto e : chapters.keys()){
item = new QTreeWidgetItem();
item->setText(0,chapters.value(e));
item->setText(2,QString::number(e));
ui->chapterTreeWidget->addTopLevelItem(item);
}
for(auto e : subChapters.keys()){
item = new QTreeWidgetItem();
item->setText(0,subChapters.value(e).toUpper());
item->setText(2,QString::number(e));
for (auto i {0}; i < ui->chapterTreeWidget->topLevelItemCount(); i++){
if (ui->chapterTreeWidget->topLevelItem(i)->text(2).toInt() < item->text(2).toInt()){
if (i + 1 < ui->chapterTreeWidget->topLevelItemCount()){
if (ui->chapterTreeWidget->topLevelItem(i + 1)->text(2).toInt() > item->text(2).toInt()){
ui->chapterTreeWidget->topLevelItem(i)->addChild(item);
}
}
}
}
}
QTreeWidgetItem*item;
//int是textdocument中的行号
//QMap
QMap章节;
QMap分章;
ui->chapterTreeWidget->clear();
对于(自动e:chapters.keys()){
item=新的QTreeWidgetItem();
item->setText(0,chapters.value(e));
item->setText(2,QString::number(e));
ui->chapterTreeWidget->addTopLevelItem(项目);
}
对于(自动e:subChapters.keys()){
item=新的QTreeWidgetItem();
item->setText(0,subChapters.value(e.toUpper());
item->setText(2,QString::number(e));
对于(自动i{0};ichapterTreeWidget->topLevelItemCount();i++){
如果(ui->chapterTreeWidget->topLevelItem(i)->text(2.toInt()text(2.toInt()){
如果(i+1chapterTreeWidget->topLevelItemCount()){
如果(ui->chapterTreeWidget->topLevelItem(i+1)->文本(2).toInt()>项目->文本(2).toInt()){
ui->chapterTreeWidget->topLevelItem(i)->addChild(item);
}
}
}
}
}
我遇到的问题是,每次文本更新时,我都会清除treewidget并插入新列表,所有分支都会关闭,我希望保持分支处于相同的状态,而不是函数expandAll(),我希望示例如下:
之前:
在添加新的子章节之后:
请提供一份