Pasek przewijania w QWebView

0

Witam,
używam bibliotek Qt 4.8.
Mam klasę C++ która dziedziczy z QWebView i posiada funkcję
void mouseReleaseEvent(QMouseEvent * event);
Mam problem z tym, że funkcja ta jest uruchamiana także gdy kliknie się w pasek przewijania QWebView.
W związku z tym czy istnieje jakiś sposób aby w powyższej funkcji wykryć/rozróżnić czy zdarzenie przyszło od owego paska przewijania czy od samego wyświetlacza?

Obejście problemu byłoby też możliwe jeśli dałoby się pobrać wskaźnik do obiektu QScrollBar(do paska przewijania QWebView). Jednak obecnie chyba nie ma takiej możliwości?

0

Patrząc na deklarację klasy QWebView nie wydaje mi się-ten pasek jest raczej malowany przez nią samą a nie jest obiektem klasy QScrollBar (swoją drogą,ogromne niedopatrzenie projektantów).na pewno w kodzie źródłowym QWebView::paint() jest wyjaśnienie tej tajemnicy.

Pokaż jakiś screen tego widoku,jeśli te paski mają stałą szerokość to zawsze możesz badać co siedzi w event->pos()-jak jest z przedziału <viewWidth-scrollbarWidth,viewWidth> to wiesz,że kliknięcie nastąpiło w pasek.

EDIT:
Albo tym się próbuj poratować-klasa QWebHitTestResult

0
MasterBLB napisał(a)

Patrząc na deklarację klasy QWebView nie wydaje mi się-ten pasek jest raczej malowany przez nią samą a nie jest obiektem klasy QScrollBar (swoją drogą,ogromne niedopatrzenie projektantów).na pewno w kodzie źródłowym QWebView::paint() jest wyjaśnienie tej tajemnicy.

Rzeczywiście nie da się uzyskać wskaźnika do paska przewijania QWebView.

MasterBLB napisał(a)

Pokaż jakiś screen tego widoku,jeśli te paski mają stałą szerokość to zawsze możesz badać co siedzi w event->pos()-jak jest z przedziału <viewWidth-scrollbarWidth,viewWidth> to wiesz,że kliknięcie nastąpiło w pasek.

Niestety nie mogę przyjąć, że paski przewijania będą miały stałą szerokość, a to dlatego, że w systemie operacyjnym użytkownik może zmienić szerokość wszystkich pasków przewijania.

MasterBLB napisał(a)

EDIT:
Albo tym się próbuj poratować-klasa QWebHitTestResult
</quote>
Spróbowałem z tej klasy funkcji isNull() oraz element->isNull() i obydwie zwracają to samo gdy kliknie się pasek przewijania oraz gdy kliknie się wyświetlacz.

Na razie zastosowałem całkiem inne obejście nie związane z paskami przewijania. Nie jest to całkowite rozwiązanie problemu, ale jeśli nie ma możliwości określenia czy kliknęło się w pasek przewijania czy w sam wyświetlacz QWebView to wystarczy. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1