In meiner Anwendung habe ich Listenansicht. Auswählen ein anderes Element in ihm, löst ein Ereignis:QtWebPage - loadFinished() mehrmals aufgerufen
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("+"));
}
}
Dies ruft eine andere Schlitz - 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()));
}
Und schließlich, wenn die Seite vollständig geladen ist, sollte es loading_finished nennen()
void MainWindow::loading_finished()
{
qDebug() << "loading_finished(), caller: " << sender()->objectName();
}
Aber zu meiner Überraschung, der Ausgang ist:
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"
Wie Sie sehen können Jedes Mal, wenn ich die Auswahl ändere, wird eine weitere Instanz (?) von WebFrame erstellt und geladen, oder die Seite wird +1 Zeit pro Schleife geladen. Ich habe die letzten 2 Stunden damit verbracht herauszufinden, wo das Problem liegt und ich sehe nichts.
Oh verdammt, ich habe diese Linie komplett vergessen. Hat fast alles ausgerechnet, aber das. >.> So eine Schande. Vielen Dank. ;) –