[Interest] mapToGlobal and mapToLocal

Mitchell Verter mitchell.verter at gmail.com
Tue Sep 17 22:47:06 CEST 2013


I have been having issues using mapToLocal and mapToLocal

I am wondering whether there are issues with using these functions within
laidout components?  Laidout within the brower is a navigation bar; laidout
within the navigation bar are a series of QPushButtons.

Consistently, there is a 100-pixel discrepancy between where the mouse
actually is and where QT seems to think it is.  This problem occurs only
within the nav bar.  The mouse position is correctly detected in other
parts of the browser .

For example, the mouse was actually hovering over the RELOAD button when it
was detected as hovering over the HOME button
point= ( 567 ,  112 )  HomeBtn   QPoint(560,101)    QPoint(603,132)


I've tried different variations of this code but keep on getting the same
error.  Is something else going on here?

Thanks
Mitchell


===========

CODE ONE

    if (button->geometry().contains(
addressBar->mapFromGlobal(QPoint(kinect_x, kinect_y))))
====================


CODE TWO

bool NavigationBar::
checkGlobalPoint(QWidget * widge, int kinect_x, int kinect_y)
{
    QPoint UL = widge->mapToGlobal(widge->geometry().topLeft());
    QPoint LR = widge->mapToGlobal(widge->geometry().bottomRight());

    qDebug() <<  "point= (" << kinect_x << ", " << kinect_y << ") " <<
widge->metaObject()->className() << " " << UL << "  "  << LR;
    if (kinect_x >= UL.x() && kinect_x <= LR.x() &&
            kinect_y >= UL.y() && kinect_y <= LR.y())
    {
        return true;
    }
    return false;
}

=============


CODE THREE

bool NavigationBar::checkGlobalPoint(QWidget * widge, int kinect_x, int
kinect_y)
{

    int * x1 ,* y1 , * x2, * y2;
        x1 = (int *)malloc(sizeof(int));
        y1 = (int *)malloc(sizeof(int));
        x2 = (int *)malloc(sizeof(int));
        y2 = (int *)malloc(sizeof(int));

        QRect geo = widge->geometry();
        geo.getCoords(x1,y1, x2, y2);
        QPoint UL = widge->mapToGlobal(QPoint(*x1, *y1));
        QPoint LR = widge->mapToGlobal(QPoint(*x2, *y2));

        if ((kinect_x >= UL.x()) &&
                (kinect_x <= LR.x()) &&
                (kinect_y >= UL.y()) &&
                (kinect_y <= LR.y()) )
        {
            return true;
        }
        return false;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20130917/f6a4132e/attachment.html>


More information about the Interest mailing list