QList<int> AllWidget::findPortListByWidget(QString objNameWidget) { QList<int> tmp; for (int i = 0; i < listStructPort.size(); ++i) { if(listStructPort.at(i)->portName.contains(objNameWidget)) tmp.append(i); } return tmp; }
时间: 2024-04-21 14:26:41 浏览: 89
这是一个函数实现,函数名为findPortListByWidget,参数为一个QString类型的objNameWidget。该函数的作用是在一个名为listStructPort的QList中查找portName属性包含objNameWidget的元素,并将这些元素的索引添加到一个新的QList<int>中,最后将这个新的QList<int>返回。
具体实现是通过遍历listStructPort中的所有元素,逐个判断其portName属性是否包含objNameWidget,如果包含则将该元素的索引添加到临时QList<int>中。最后返回临时QList<int>。
相关问题
error: C2248: “QList<queueInfo *>::iterator::i”: 无法访问 private 成员(在“QList<queueInfo *>::iterator”类中声明) ..\QTCPP-master\parklot.cpp(37): error C2248: “QList<queueInfo *>::iterator::i”: 无法访问 private 成员(在“QList<queueInfo *>::iterator”类中声明) F:\QT\6.5.1\msvc2019_64\include\QtCore/qlist.h(104): note: 参见“QList<queueInfo *>::iterator::i”的声明 F:\QT\6.5.1\msvc2019_64\include\QtCore/qlist.h(101): note: 参见“QList<queueInfo *>::iterator”的声明
这个错误消息表明,您正在试图访问一个私有成员变量“i”,但该成员变量在“QList<queueInfo *>::iterator”类中声明为私有成员变量。为了解决这个问题,您需要更改访问级别或使用公共接口。
在这种情况下,您可以考虑使用公共接口来访问列表中的元素。例如,使用迭代器来遍历列表:
```cpp
QList<queueInfo*> myQueueList;
// 添加元素到列表
queueInfo* myQueue = new queueInfo();
myQueueList.append(myQueue);
// 遍历列表并访问元素
for (QList<queueInfo*>::iterator queueIter = myQueueList.begin(); queueIter != myQueueList.end(); ++queueIter)
{
// 使用迭代器访问元素
queueInfo* currentQueue = *queueIter;
// 使用 currentQueue 对象进行操作
}
```
请注意,这只是一个示例,您需要根据您的代码结构和需求来调整代码。另外,如果您必须访问私有成员变量,您可以考虑将该类声明为友元类或使用派生类来继承该类并访问其私有成员变量。
QList<int>::reverse_iterator
QList<int>::reverse_iterator是QList<int>类的反向迭代器,它可以从后往前遍历QList<int>类对象。反向迭代器和正向迭代器用法类似,只不过它们是反向遍历容器的。QList<int>::reverse_iterator可以通过调用QList<int>的rbegin()和rend()函数获取,示例如下:
```
QList<int> list;
list << 1 << 2 << 3;
for (QList<int>::reverse_iterator i = list.rbegin(); i != list.rend(); ++i) {
qDebug() << *i;
}
```
这段代码会输出3、2、1,即从后往前遍历QList。
阅读全文