0

アクティブな QWebPage と非アクティブな QWebPage をそれぞれ保持する 2 つの配列があります。つまり、実行中の QWebPage の最大数を制限したいので、これを行いました。

2 つの 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
}

オブジェクトは複数のリストに属することができるので (これは単なるポインターです)、activeQList からオブジェクトを削除してpagesリストに追加する必要があります。

しかし、QList はインデックス番号による削除のみをサポートしています。今は直接行うことはできません。

何か案は?リストを繰り返し処理しないことを願っています。

4

1 に答える 1

1

QList、項目インデックスだけでなく、項目値による項目の削除をサポートしています。メンバー関数removeOne()とがありremoveAll()ます。あなたの場合、 removeOne() が正しい選択です。

于 2013-03-29T14:11:17.817 に答える