我有两个分别保存活动和非活动QWebPage的数组,也就是说,我想限制最大运行QWebPages,所以我这样做了,
我使用两个QList对象,
QList<QWebPage*> pages; // holds remaining pages
QList<QWebPage*> active; // holds active ones
当我需要发送请求时,我会这样做:
void XXX::addRequest (QUrl url)
{
if (pages.size() > 0)
{
QWebPage *page = pages.front();
pages.pop_front();
active.push_back (page);
page->mainFrame().load (url);
}
}
请求完成后,
void XXX::finished (bool ok)
{
QWebPage *page = qobject_cast<QWebPage*> (sender());
// blabla
// now I need to move this "page" to the "pages" list
}
由于一个对象可以属于多个列表(它只是一个指针),我应该将它从active
QList中删除并将其附加到pages
列表,
但是QList只支持按索引号删除,我现在不能直接这样做。
有什么想法吗?希望不要遍历列表。
答案 0 :(得分:1)
QList 支持支持按项目值删除项目,而不仅仅是项目索引。有成员函数removeOne()
和removeAll()
。在您的情况下,removeOne()是正确的选择。