Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 来自Qtextedit的QtreeWidget更新层次结构_C++_Qt_Qtreeview_Qtextedit_Qtreewidget - Fatal编程技术网

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(),我希望示例如下:

之前:

在添加新的子章节之后:

请提供一份