Seite 1 von 1

scrollToAnchor(QString) scrollt nicht

Verfasst: 18. Juli 2009 23:15
von Mensch
Hallo zusammen,

ich habe das Problem, dass in meinen Text Browser die Methode scrollToAnchor nicht zu der Ankerstelle im html Dokument springt zu der sie soll, sondern immer zum nullten Element der QStringList in der die Ankerstellen stehen. Hier mein Code:

Code: Alles auswählen

void FeatureTransformation::showTransfInfo(int index)
{
    m_ui->textBrowser->setSource(QUrl("FeatTransInfo.htm"));
    std::cout << transformAnchorList[index].toStdString() << std::endl;
    m_ui->textBrowser->scrollToAnchor(transformAnchorList[index]);
    m_ui->textBrowser->activateWindow();
    m_ui->textBrowser->setFocus();
}
Der SLOT in dem dieser Code steht wird korrekt bei einer Auswahl aus einer ComboBox gestartet. transformAnchorList[index] liefert auch auch den korrekten Eintrag in der Liste der Ankerstellen, was durch korrekten cout Output bestätigt wird. Leider wird aber dennoch IMMER zum ersten (nullten) Eintrag im TextBrowser gescrollt. Trage ich die Ankerstelle manuell per "xxx" im Code als Parameter von scrollToAnchor ein klappt alles wie es soll, aber eigentlich kommt auch der richtige Eintrag aus transformAnchorList[index], wie ich wie gesagt durch das cout weiß. transformAnchorList ist eine private Variable. Sieht jemand was ich falsch mache, bzw. reicht die Fehlerbeschreibung aus?

Viele Grüße und Dank im Voraus!

Verfasst: 19. Juli 2009 08:16
von franzf
Versteh ich das richtig, du führst eine separate Liste mit den Strings aus der ComboBox? 2x die gleichen Daten halten kann schon mal schief gehen, :P
Greif doch einfach auf die ComboBox zu (QString itemText(int index)), oder nimm dir gleich das Signal "currentIndexChanged(const QString& text)".

Falls das alles nix bringt, ist denke ich mehr Code nötig.

Grüße
Franz

Verfasst: 19. Juli 2009 13:50
von Mensch
Ich weiß zwar immernoch nicht woran es lag, aber dein Vorschlag das Signal currentIndexChanged(const QString& text) funktioniert einwandfrei. Vielen Dank für den Tipp!