【发布时间】:2017-09-14 01:17:41
【问题描述】:
我正在使用 Qt 解析 XML 文件,使用 QTreeWidget 来显示 XML 的各个部分。我想维护指向每个部分“标题”的指针。
我定义了这些指针:
QTreeWidgetItem* groupExport,
groupDesign,
groupSheet,
groupTitleBlock,
groupComponents,
groupLibParts,
groupLibraries,
groupNets;
我有这些功能:
//////////////////////////////////////////////////////////////////////////////
/// treeAddRoot
///---------------------------------------------------------------------------
QTreeWidgetItem* window_Main::treeAddRoot(QString name) {
QTreeWidgetItem *treeRoot = new QTreeWidgetItem(ui->treeSourceFile);
...
return treeRoot;
}
QTreeWidgetItem* window_Main::treeAddRoot(QString name, QString description) {
QTreeWidgetItem *treeRoot = new QTreeWidgetItem(ui->treeSourceFile);
...
return treeRoot;
}
//////////////////////////////////////////////////////////////////////////////
/// treeAddGroup
///---------------------------------------------------------------------------
QTreeWidgetItem* window_Main::treeAddGroup(QTreeWidgetItem *treeParent, QString name) {
QTreeWidgetItem *treeChildGroup = new QTreeWidgetItem(treeParent);
...
return treeChildGroup;
}
QTreeWidgetItem* window_Main::treeAddGroup(QTreeWidgetItem *treeParent, QString name, QString description) {
QTreeWidgetItem *treeChildGroup = new QTreeWidgetItem(treeParent);
...
return treeChildGroup;
}
//////////////////////////////////////////////////////////////////////////////
/// treeAddChild
///---------------------------------------------------------------------------
void window_Main::treeAddChild(QTreeWidgetItem *treeParent, QString name) {
QTreeWidgetItem *treeChild = new QTreeWidgetItem(treeParent);
...
treeParent->addChild(treeChild);
}
void window_Main::treeAddChild(QTreeWidgetItem *treeParent, QString name, QString description) {
QTreeWidgetItem *treeChild = new QTreeWidgetItem(treeParent);
...
}
这些是为解析时“临时”使用而定义的:
QString tempTag, tempValue;
对于解析代码,编译器似乎认为这样可以:
if (tempTag.contains("export")) {
...
groupExport = treeAddRoot(tempTag);
}
然而,几行之后,是这样的:
if (tempTag.contains("design")) {
...
groupDesign = treeAddGroup(groupExport, tempTag);
}
编译器错误:
error: no match for ‘operator=’ (operand types are ‘QTreeWidgetItem’ and ‘QTreeWidgetItem*’)
groupDesign = treeAddGroup(groupExport, tempTag);
^
有人能帮我理解其中的区别吗?为什么编译一个可以,而另一个编译失败?
提前致谢。
【问题讨论】:
-
"我定义了这些指针" 只有
groupExport是一个指针,其余都是普通实例。