В моем приложении у меня есть просмотр списка. При выборе другого элемента в нем, вызывает событие:QtWebPage - loadFinished(), вызываемый несколько раз
connect(listView->selectionModel(), SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(item_changed(const QModelIndex &, const QModelIndex &)));
void MainWindow::item_changed(const QModelIndex & current, const QModelIndex & previous)
{
qDebug() << "\n" << "item_changed(), caller: " << sender()->objectName();
if (current.isValid())
{
/*
not so important code
*/
change_query(tokens.join("+"));
}
}
Это вызывает еще один слот - change_query().
void MainWindow::change_query(QString newquery)
{
qDebug() << "change_query(), caller: " << sender()->objectName();
QUrl query (newquery);
frame->load(query);
connect(frame, SIGNAL(loadFinished(bool)), this, SLOT(loading_finished()));
}
И, наконец, когда страница полностью загружена, то он должен вызывать loading_finished()
void MainWindow::loading_finished()
{
qDebug() << "loading_finished(), caller: " << sender()->objectName();
}
Но, к моему удивлению, выход:
item_changed(), caller: "SelectionModel"
change_query(), caller: "SelectionModel"
loading_finished(), caller: "frame"
item_changed(), caller: "SelectionModel"
change_query(), caller: "SelectionModel"
loading_finished(), caller: "frame"
loading_finished(), caller: "frame"
item_changed(), caller: "SelectionModel"
change_query(), caller: "SelectionModel"
loading_finished(), caller: "frame"
loading_finished(), caller: "frame"
loading_finished(), caller: "frame"
item_changed(), caller: "SelectionModel"
change_query(), caller: "SelectionModel"
loading_finished(), caller: "frame"
loading_finished(), caller: "frame"
loading_finished(), caller: "frame"
loading_finished(), caller: "frame"
Как вы можете видеть , каждый раз, когда я меняю выбор, создается и загружается другой экземпляр (?) WebFrame, или страница загружается +1 раз каждый цикл. Я провел последние 2 часа, выясняя, где проблема, и ничего не вижу.
О, черт побери, я совсем забыл об этой линии. Прокомментировал почти все, но это. >.> Такой позор. Большое спасибо. ;) –