Перемещение объекта из одного 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 поддерживает удаление только по номерам индексов, сейчас я не могу сделать это напрямую.

Любые идеи? Надеюсь не повторяться по списку.


person daisy    schedule 29.03.2013    source источник


Ответы (1)


QList поддерживает удаление элементов по значению элемента, а не только по индексу элемента. Существуют функции-члены removeOne() и removeAll(). В вашем случае removeOne() является правильным выбором.

person Community    schedule 29.03.2013