从列表小部件中选择并添加到文本编辑
Selecting from listWidget and adding to textedit
好的,所以标题可能很轻描淡写,我将在这里解释它。我有一个ListWidget
和一个TextEdit
.所以第一次我读取了一个 xml 文件(这个 xml 文件有其他配置文件的路径)。我将从XML文件中获取的所有路径存储在这样的结构中:
页眉
struct triStringList
{
QString Filename;
QString block;
QString flag;
QString aktioncommand;
};
QList<triStringList> allTriList;
QList <QListWidgetItem*> items;
.cpp
void MainWindow::presetXML()
{
triStringList triStr;
QXmlGet xmlget;
xmlget.load(File.xml);
xmlget.findAndDescend("HEADER");
while(xmlget.findNext("HEADER_FILES"))
{
triStr.Filename.append(xmlget.getAttributeString("Name"));
triStr.block.append(xmlget.getAttributeString("BlockNr"));
triStr.flag.append(xmlget.getAttributeString("FLags"));
xmlget.descend();
if(xmlget.findNext("AKTION_COMMAND"))
{
triStr.aktioncommand =xmlget.getAttributeString("Name");
}
allTriList.append(triStr);
xmlget.rise
}
for(int i=0; i<allTriList.count(); i++)
{
Qstring name;
QFileInfo file(allTriList[i].Filename);
name = file.fileName();
preset_tri_list.append(name);
}
ui->listWidgetOutput->addItems(preset_tri_list);
好的,我将文件名添加到列表小部件中,就像我上面显示的那样,所有子都不会有"操作命令"子子。我有一个函数,当在listwidgetoutput中单击文件时,它可以在我所说的TextEdit
上显示此操作命令:-1日我拿选定的项目-然后我修剪结构中所有文件的文件名。-与选定的项目比较-如果匹配,我将相应的操作命令添加到文本编辑中。
void MainWindow::on_listWidgetOutput_itemSelectionChanged()
{
QString list;
QStringList list1;
items = ui->listWidgetOutput_TRI->selectedItems();
qDebug()<<"num: "<<items.count();
qDebug()<< "all: "<<allTriList.count();
for(int i=0; i<allTriList.count();i++)
{
QFile file(allTriList[i].Filename);
list = file.fileName();
list1.append(list);
for(int j=0; j<items.count(); j++)
{
if(items[j]->text() == list1[j])
{
ui->TextEdit->setText(allTriList[i].aktioncommand);
}
}
}
}
但是当我单击该文件时,我得到:
ASSERT failure in QList<T>::operator[]: "index out of range", file C:appToolsQt5.4msvc2010_openglincludeQtCore/qlist.h, line 486
程序崩溃了,从调试中我发现它在这里崩溃:for(int j=0; j<items.count(); j++)
但它不是空的。不太确定发生了什么,我是Qt初学者。很抱歉写了很长的帖子
XML 文件:
<Header>
<TRIGGER Name="%PATH%/file" FLags="C24" BlockNr="C_Blocknr_1"/>
<TRIGGER Name="%%PATH%/file" FLags="C25" BlockNr="C_Blocknr_2"/>
<TRIGGER Name="%PATH%/file" FLags="C74" BlockNr="C_Blocknr_6"/>
<TRIGGER Name="%PATH%/file" FLags="C94" BlockNr="C_Blocknr_1"/>
<TRIGGER Name="%%PATH%/file" FLags="C20" BlockNr="C_Blocknr_1"/>
<TRIGGER Name="%%PATH%/file" FLags="C21" BlockNr="C_Blocknr_1"/>
<TRIGGER Name="%%PATH%/file" FLags="C49" BlockNr="C_Blocknr_1"/>
</Header>
据
我了解:你有一个外部循环(计算var i
)和一个内部循环(计算var j
),你用它来比较两个列表。对于外循环(i
)中的每个项目,您可以搜索内部循环(j
)中的每个项目。所以在下一行
if(items[j]->text() == list1[j])
我假设你的意思是做以下比较:
if(items[j]->text() == list1[i])
相关文章:
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 如何使用 c++ 实现并发文件/文本编辑?
- 如何在文本编辑器中处理 [-Wc++11-extensions]
- QT 创建器只会将第一个单词从文本编辑转换为纯文本
- CRUD(添加/查看/编辑/删除/查看所有记录)
- 在C++的“编辑”文本框中禁用文本编辑,同时保持启用滚动
- 如何在Windows中将使用Qt制作的记事本设置为默认文本编辑器
- 尝试在自定义 QT 创建器文本编辑器中创建查找和替换循环.我似乎无法设置光标位置
- UTF-16LE 编码问题与 Qt 文本编辑器用 C++ 编写
- 要求文本编辑,文本格式
- 使用FreeImage向图像添加文本
- 如何将库导入文本编辑器
- 富文本编辑器--创建和维护项目符号列表时的问题
- 使用Strncpy在C++中创建一个简单的文本编辑器
- Qt C++ 如何在文本编辑的开头获取光标
- 从列表小部件中选择并添加到文本编辑
- Qt - 无效使用不完整的类型 'class QScrollBar' - 为文本编辑小部件添加水平滚动条
- 无法向文本编辑添加语法突出显示器
- 在c++中向Win32编辑框添加文本
- 如何在Qt中使用线程将文本添加到文本编辑器中