Перемещение объекта из одного QList в другой
У меня есть два массива, которые содержат активный и неактивный 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 поддерживает удаление только по номерам индексов, я не могу сделать это прямо сейчас.
Есть идеи? Надеюсь, не перебирая список.
1 ответ
Решение
QList поддерживает удаление элементов по значению элемента, а не только по индексу элемента. Есть функции-члены removeOne()
а также removeAll()
, В вашем случае, removeOne() - это правильный выбор.