sorry, wenn das Thema schonmal diskutiert worden sein sollte, konnte in der SuFu nix dazu finden...
Ich bin relativer Newbie in Qt 4.x und habe eine Anwendung, die als Haupt-Widget in einem MainWindow (abgeleitet von QMainWindow) eine QScrollArea besitzt. Diese hat als Child Widget ein von QWidget abgeleitetes Widget, der Konstruktor von MainWindow sieht etwa so aus:
Code: Alles auswählen
MainWindow::MainWindow()
{
scrollArea = new QScrollArea;
viewer = new QSvgViewer(scrollArea); // set scroll area to parent
scrollArea->setWidget(viewer);
...
setCentralWidget(scrollArea);
resize(800,600); // size of MainWindow
viewer->setFixedSize(600, 4800); // widget has fixed size
viewer->resize(6000, 4800); // initial size of scroll map widget
}
In einer anderen Methode der Klasse MainWindow will ich nun das Widget auf einen bestimmten Punkt zentrieren, so dass dieser Punkt (x,y) in der Mitte des Viewports der ScrollArea ist:
Code: Alles auswählen
void MainWindow::setPos(int x, int y)
{
...
scrollArea->>setFocus(); // has to be called when using ensureVisible() before event loop
scrollArea->ensureVisible(x, y, scrollArea->width()/2, scrollArea->height()/2);
...
}
Leider funktioniert dies recht unzuverlässig, manchmal geht der Fokus aus dem Viewport, ohne dass ein Scrollvorgang erfolgt
Falls jemand zu obigem Problem Tipps & Lösungsvorschläge hat (auch andere Möglichkeiten, das "Fokus"-Problem zu lösen), wäre ich sehr dankbar...
Gruß,
AlGaN
[/code]