Results 1 to 14 of 14

Thread: drag mouse problem

  1. #1
    Join Date
    Jul 2012
    Posts
    24
    Qt products
    Qt4
    Platforms
    Windows

    Default drag mouse problem

    Hi,
    i want when i clic on object and drag the mouse cursor the object move to the new position
    i have
    Qt Code:
    1. void My_app:mousePressEvent(QMouseEvent* evt)
    2. void My_app::mouseMoveEvent(QMouseEvent *e)
    3. {
    4. if(e->buttons().testFlag(Qt::LeftButton))
    5. {
    6. Ogre::Real offsetX =(double)e->pos().x()/(double)width();
    7. Ogre::Real offsetY=(double) e->pos().y()/(double)height();
    8.  
    9.  
    10.  
    11. mRayScnQuery = mSceneMgr->createRayQuery(Ogre::Ray());
    12.  
    13.  
    14.  
    15. Ogre::Ray mouseRay = mCamera->getCameraToViewportRay(offsetX, offsetY);
    16.  
    17.  
    18. mRayScnQuery->setRay(mouseRay);
    19. // Execute query
    20. Ogre::RaySceneQueryResult &result =mRayScnQuery->execute();
    21. Ogre::RaySceneQueryResult::iterator itr;
    22.  
    23. Ogre::RaySceneQueryResult::iterator target;
    24. float shortestDistance = -1 ;
    25.  
    26. for( itr = result.begin() ;itr != result.end();++itr)
    27. {
    28.  
    29. if( itr->distance < shortestDistance || shortestDistance < 0 )
    30. {
    31. // remember the closest
    32. shortestDistance = itr->distance;
    33. target = itr;
    34. }
    35.  
    36. }
    37.  
    38.  
    39.  
    40. Ogre:: Vector3 point=mouseRay.getPoint(target->distance);
    41. emit move_object(point);
    42. }
    To copy to clipboard, switch view to plain text mode 
    the problem is the mouse move event do not work exactelly , it give me always the same position( point posiiton is the same) even if i move the mouse

    i know that's maybe i do
    Last edited by robel; 2nd November 2015 at 11:06.

  2. #2
    Join Date
    Jan 2006
    Location
    Graz, Austria
    Posts
    8,416
    Qt products
    Qt3 Qt4 Qt5
    Platforms
    Unix/X11 Windows
    Thanks
    37
    Thanked 1,544 Times in 1,494 Posts

    Default Re: drag mouse problem

    Quote Originally Posted by robel View Post
    the problem is the mouse move event do not work exactelly , it give me always the same position( point posiiton is the same) even if i move the mouse
    Mouse event positions are relative to the widget's top left corner.

    You might want to map to global coordinates.

    Cheers,
    _

  3. #3
    Join Date
    Jul 2012
    Posts
    24
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: drag mouse problem

    You might want to map to global coordinates.
    what you mean?
    but why the code work with a camera orienttaion and not for another?

  4. #4
    Join Date
    Jan 2006
    Location
    Graz, Austria
    Posts
    8,416
    Qt products
    Qt3 Qt4 Qt5
    Platforms
    Unix/X11 Windows
    Thanks
    37
    Thanked 1,544 Times in 1,494 Posts

    Default Re: drag mouse problem

    Ah, you edited while I was replying.

    I thought you meant moving the widget.

    Cheers,
    _

  5. #5
    Join Date
    Jul 2012
    Posts
    24
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: drag mouse problem

    Ah no, i want to move the object while i move the mouse
    itried to add "setMouseTracking(true);"

    Qt Code:
    1. void My_app::mouseMoveEvent(QMouseEvent *e)
    2. {
    3. if(e->buttons().testFlag(Qt::LeftButton))
    4. {
    5. Ogre::Real offsetX =(double)e->pos().x()/(double)width();
    6. Ogre::Real offsetY=(double) e->pos().y()/(double)height();
    7.  
    8.  
    9.  
    10. mRayScnQuery = mSceneMgr->createRayQuery(Ogre::Ray());
    11.  
    12.  
    13.  
    14. Ogre::Ray mouseRay = mCamera->getCameraToViewportRay(offsetX, offsetY);
    15.  
    16.  
    17. mRayScnQuery->setRay(mouseRay);
    18. // Execute query
    19. Ogre::RaySceneQueryResult &result =mRayScnQuery->execute();
    20. Ogre::RaySceneQueryResult::iterator itr;
    21.  
    22. Ogre::RaySceneQueryResult::iterator target;
    23. float shortestDistance = -1 ;
    24.  
    25. for( itr = result.begin() ;itr != result.end();++itr)
    26. {
    27.  
    28. if( itr->distance < shortestDistance || shortestDistance < 0 )
    29. {
    30. // remember the closest
    31. shortestDistance = itr->distance;
    32. target = itr;
    33. }
    34.  
    35. }
    36.  
    37.  
    38.  
    39. Ogre:: Vector3 point=mouseRay.getPoint(target->distance);
    40. emit move_object(point);
    41. setMouseTracking(true);
    42. e->accept();
    43.  
    44. }
    45. emit mouseMove(e);
    46. }
    To copy to clipboard, switch view to plain text mode 
    but nothing it change it detect just the first clic on the mouse when i mouse nothing change it print the first position

  6. #6
    Join Date
    Jan 2006
    Location
    Graz, Austria
    Posts
    8,416
    Qt products
    Qt3 Qt4 Qt5
    Platforms
    Unix/X11 Windows
    Thanks
    37
    Thanked 1,544 Times in 1,494 Posts

    Default Re: drag mouse problem

    Mouse Tracking only gets mouse move events delivered when no button is pressed.
    In any case it wouldn't make sense to call this inside the mouse move event handler.

    So is your mouseMoveEvent() method called at all?
    Does buttons() not contain left button?

    Cheers,
    _

  7. #7
    Join Date
    Jul 2012
    Posts
    24
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: drag mouse problem

    No,
    i clic on the left button and i drag the mouse in the same time
    but always it detect the same position (where i clicked the first time)

  8. #8
    Join Date
    Sep 2015
    Posts
    50
    Qt products
    Qt5
    Platforms
    Unix/X11
    Thanks
    8

    Default Re: drag mouse problem

    Quote Originally Posted by robel View Post
    No,
    i clic on the left button and i drag the mouse in the same time
    but always it detect the same position (where i clicked the first time)
    I draw a line vector and I click on a single end and while holding the mouse button down I can reposition where it is pointing until i release it.

    This happens in the drawing and signla/slot handlers for the QGraphicsLineItem class. You should be able to do something similar. Here is a look at mine. In the mousePressEvent I set a dragIndex depending upon where I clicked it because that determines what my rotation is or whether I am dragging the vector...
    Qt Code:
    1. void PhysVector::mousePressEvent(QGraphicsSceneMouseEvent *event) {
    2. const QPointF pos = event -> pos();
    3. const qreal line1 = QLineF(pos, line().p1()).length();
    4. const qreal line2 = QLineF(pos, line().p2()).length();
    5. const qreal threshold = 3.5;
    6.  
    7. if (line1 < line2 && line1 < threshold)
    8. m_dragIndex = DI_VECTORTAIL;
    9. else if (line2 < line1 && line2 < threshold)
    10. m_dragIndex = DI_VECTORHEAD;
    11. else {
    12. m_dragIndex = DI_VECTORLINE;
    13. m_currPos = event -> pos();
    14. }
    15. event -> setAccepted(true);
    16. // qDebug("mousePressEvent m_dragIndex: '%d'", m_dragIndex);
    17. update();
    18. QGraphicsItem::mousePressEvent(event);
    19. }
    To copy to clipboard, switch view to plain text mode 

    The update() and handling of QGraphicsItem::mousePressEvent(event) allows painting and default handling to occur.

    The paint function which handles how it gets drawn:
    Qt Code:
    1. void PhysVector::paint(QPainter *pPainter, const QStyleOptionGraphicsItem *pOption, QWidget *) {
    2. QPen myPen = pen();
    3. pPainter -> setPen(pen());
    4.  
    5. // If there are two particles to attach to then draw a the vector and attach to them
    6. if (m_pStartParticle && m_pEndParticle) {
    7. if (m_pStartParticle -> collidesWithItem(m_pEndParticle))
    8. return;
    9. QLineF centerLine(m_pStartParticle -> pos(), m_pEndParticle -> pos());
    10. QPolygonF endPolygon = m_pEndParticle -> polygon();
    11. QPointF p1 = endPolygon.first() + m_pEndParticle -> pos();
    12. QPointF p2;
    13. QPointF intersectPoint;
    14. QLineF polyLine;
    15.  
    16. for (int i = 1; i < endPolygon.count(); ++i) {
    17. p2 = endPolygon.at(i) + m_pEndParticle -> pos();
    18. polyLine = QLineF(p1, p2);
    19. QLineF::IntersectType intersectType = polyLine.intersect(centerLine, &intersectPoint);
    20. if (intersectType == QLineF::BoundedIntersection)
    21. break;
    22. p1 = p2;
    23. }
    24. setLine(QLineF(intersectPoint, m_pStartParticle -> pos()));
    25. }
    26.  
    27. // else if there is a starting particle and no ending particle then handle
    28. else if (m_pStartParticle && !m_pEndParticle) {
    29. }
    30.  
    31. // likewise if there is no starting particle but an ending particle, handle
    32. else if (!m_pStartParticle && m_pEndParticle) {
    33.  
    34. }
    35.  
    36. // The default case of NO particles, is just a vector. We do nothing and just drop into the vector draw
    37. else {
    38. }
    39.  
    40. // Draw the vector
    41. QLineF aLine = line();
    42. QPointF arrowP1, arrowP2;
    43. double drawAngle, realAngle, Theta;
    44.  
    45. realAngle = ::acos(aLine.dx() / aLine.length());
    46. if (m_Theta.axisOrientation == AXIS_HORIZ) {
    47. QPointF currCoordP1(aLine.p1().x(), aLine.p1().y());
    48. Theta = (::atan(aLine.dy() / aLine.dx()) * (180 / PhysConsts::PI));
    49. qDebug("Line (x, y): (%f, %f)", currCoordP1.x(), currCoordP1.y());
    50.  
    51. // If we're in the Quad I (+x, +y) or Quad II (-x, +y)
    52. if ((currCoordP1.x() >= 0 && currCoordP1.y() >= 0) || (currCoordP1.x() < 0 && currCoordP1.y() >= 0)) {
    53. if (Theta < 0)
    54. Theta = -Theta;
    55. }
    56.  
    57. // Quad III (-x, -y) or Quad IV (+x, -y)
    58. else if ((currCoordP1.x() < 0 && currCoordP1.y() < 0) || (currCoordP1.x() >= 0 && currCoordP1.y() < 0)) {
    59. if (Theta > 0)
    60. Theta = -Theta;
    61. }
    62. }
    63. m_Theta.degrees = Theta;
    64.  
    65. drawAngle = (aLine.dy() >= 0) ? (PhysConsts::PI * 2) - realAngle : (PhysConsts::PI * 2) + realAngle;
    66. arrowP1 = aLine.p1() + QPointF(sin(drawAngle + PhysConsts::PI / 3) * m_arrowSize, cos(drawAngle + PhysConsts::PI / 3) * m_arrowSize);
    67. arrowP2 = aLine.p1() + QPointF(sin(drawAngle + PhysConsts::PI - PhysConsts::PI / 3) * m_arrowSize, cos(drawAngle + PhysConsts::PI - PhysConsts::PI / 3) * m_arrowSize);
    68. m_arrowHead.clear();
    69. m_arrowHead << line().p1() << arrowP1 << arrowP2;
    70. pPainter -> drawLine(aLine);
    71. pPainter -> drawPolygon(m_arrowHead);
    72.  
    73. QString formattedLabel;
    74. m_pLabel -> setPlainText(formattedLabel.sprintf("%s: (%.6f, @=%3.2f)", m_rawLabel.toStdString().c_str(), m_magnitude, Theta));
    75. QPainterPath tmpPath;
    76. QBrush brush(m_Color);
    77. tmpPath.addPolygon(m_arrowHead);
    78. pPainter -> fillPath(tmpPath, brush);
    79. }
    To copy to clipboard, switch view to plain text mode 

    It's a little long (and admittedly not fully fleshed out) but really your own drawing would go here...

    The mouseMoveEvent is really where the control of the thing happens and how the paint() needs to occur:
    Qt Code:
    1. void PhysVector::mouseMoveEvent(QGraphicsSceneMouseEvent *event) {
    2. qDebug("mouseMoveEvent m_dragIndex: '%d'", m_dragIndex);
    3. if (m_dragIndex != DI_VECTORLINE) {
    4.  
    5. const QPointF anchor = (m_dragIndex == DI_VECTORHEAD) ? line().p1() : line().p2();
    6. QLineF ma = QLineF(anchor, event -> pos());
    7. ma.setLength(line().length());
    8. const QPointF rotated = anchor + QPointF(ma.dx(), ma.dy());
    9. setLine(m_dragIndex == DI_VECTORHEAD ? QLineF(anchor, rotated) : QLineF(rotated, anchor));
    10. }
    11. else {
    12. QPointF pt1 = line().p1();
    13. QPointF pt2 = line().p2();
    14. qreal dx = event -> pos().x() - m_currPos.x();
    15. qreal dy = event -> pos().y() - m_currPos.y();
    16. pt1.setX(pt1.x() + dx);
    17. pt1.setY(pt1.y() + dy);
    18. pt2.setX(pt2.x() + dx);
    19. pt2.setY(pt2.y() + dy);
    20. setLine(QLineF(pt1, pt2));
    21. m_currPos = event -> pos();
    22. QGraphicsItem::mouseMoveEvent(event);
    23. }
    24. update();
    25. }
    To copy to clipboard, switch view to plain text mode 

    Then when I have positioned it accordingly, I call the mouseReleaseEvent which really just determines logic for how I am linking up my vectors and particles. The real engine that drives the release and final paint is the update() at the end:
    Qt Code:
    1. void PhysVector::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
    2. if (m_dragIndex == DI_VECTORLINE) {
    3. event -> pos();
    4. }
    5. else
    6. m_dragIndex = DI_VECTORLINE;
    7.  
    8. // Now check to see if one of the end points collides with a particle. If so, attach to it
    9. QList<PhysParticle *> particles = m_pParent -> Particles();
    10. QPointF pt1 = line().p1();
    11. QPointF pt2 = line().p2();
    12.  
    13. // Check to see if the currently assigned particles are still intersected
    14. if (m_pStartParticle || m_pEndParticle) {
    15. QRectF rcPart;
    16. if (m_pStartParticle) {
    17. if (!collidesWithItem(m_pStartParticle)) {
    18. rcPart = m_pStartParticle -> boundingRect();
    19. QPointF ptPart = m_pStartParticle ->pos();
    20. QRectF rcLocalPart(ptPart.x() + rcPart.topLeft().x(), ptPart.y() + rcPart.topLeft().y(),
    21. ptPart.x() + rcPart.bottomRight().x(), ptPart.y() + rcPart.bottomRight().y());
    22.  
    23. if (!rcLocalPart.contains(pt1)) {
    24. // No longer intersecting the start point so disconnect from the particle
    25. m_pStartParticle -> removeVector(this);
    26. m_pStartParticle = NULL;
    27. }
    28. }
    29. }
    30.  
    31. // Handle the end point particle
    32. else {
    33. if (!collidesWithItem(m_pEndParticle)) {
    34. rcPart = m_pEndParticle -> boundingRect();
    35. if (!rcPart.contains(pt2)) {
    36. // No longer intersecting the end point so disconnect from the particle
    37. m_pEndParticle -> removeVector(this);
    38. m_pEndParticle = NULL;
    39. }
    40. }
    41. }
    42. }
    43. for (QList<PhysParticle *>::Iterator iter = particles.begin(); iter != particles.end(); iter++) {
    44. PhysParticle *pParticle = *iter;
    45.  
    46. if (collidesWithItem(pParticle)) {
    47.  
    48. // Verify that the end points are the only things intersecting
    49. QRectF rcPart = pParticle -> boundingRect();
    50. if (rcPart.contains(pt1)) {
    51. if (m_pStartParticle) {
    52. m_pStartParticle -> removeVector(this);
    53. }
    54. m_pStartParticle = pParticle;
    55. pParticle -> addVector(this);
    56. }
    57. if (rcPart.contains(pt2)) {
    58. if (m_pEndParticle) {
    59. m_pEndParticle -> removeVector(this);
    60. }
    61. m_pEndParticle = pParticle;
    62. pParticle -> addVector(this);
    63. }
    64. }
    65. }
    66. update();
    67. QGraphicsItem::mouseReleaseEvent(event);
    68. }
    To copy to clipboard, switch view to plain text mode 

    One thing to note is that in object creation, I set these flags:
    setFlag(ItemIsMovable);
    setFlag(ItemIsSelectable);
    setFlag(ItemSendsGeometryChanges);
    setFlag(ItemSendsScenePositionChanges);
    setFlag(ItemIsFocusable);
    setCacheMode(DeviceCoordinateCache);

    HTH
    -Caolan
    Last edited by Caolan O'Domhnaill; 3rd November 2015 at 02:23.

  9. #9
    Join Date
    Jul 2012
    Posts
    24
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: drag mouse problem

    Hi,
    thank you for the code but it's very long
    for me and to change the posiiton of the object according to the recuperated position of the mouse
    i use just
    Qt Code:
    1. object->setPosition(recuperatedposition)
    To copy to clipboard, switch view to plain text mode 
    so for me it will be simple
    i want just to know how i recuperate the mouse position while it move (i know recuperate it where i press)

  10. #10
    Join Date
    Sep 2015
    Posts
    50
    Qt products
    Qt5
    Platforms
    Unix/X11
    Thanks
    8

    Default Re: drag mouse problem

    Quote Originally Posted by robel View Post
    Hi,
    thank you for the code but it's very long
    for me and to change the posiiton of the object according to the recuperated position of the mouse
    i use just
    Qt Code:
    1. object->setPosition(recuperatedposition)
    To copy to clipboard, switch view to plain text mode 
    so for me it will be simple
    i want just to know how i recuperate the mouse position while it move (i know recuperate it where i press)
    Hahah Yeah it was very long. I didn't know what you know about QT or the extent of your issue. If all you need is the mouse position while you're moving it, you should just get the pos() from the event object in your void mouseMoveEvent(QGraphicsSceneMouseEvent *event) handler.
    http://doc.qt.io/qt-4.8/qgraphicsscenemouseevent.html

  11. #11
    Join Date
    Jul 2012
    Posts
    24
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: drag mouse problem

    i di not understand how i made it at all,
    i do not use QGraphicsSceneMouseEvent *event because i use the widget in Ogre3d

  12. #12
    Join Date
    Sep 2015
    Posts
    50
    Qt products
    Qt5
    Platforms
    Unix/X11
    Thanks
    8

    Default Re: drag mouse problem

    Quote Originally Posted by robel View Post
    i di not understand how i made it at all,
    i do not use QGraphicsSceneMouseEvent *event because i use the widget in Ogre3d
    Ah well I do not know what to help with then as I am not familiar with that graphics library and how it interacts with QT. All I can say is that I am able to make it work in QT only using the methods above. If ogre3D is interfering with how QT handles it's signals/slots then maybe they're the ones you should be asking help from... Is there an example that does what you need it to do? If so see how that is achiving the results.

  13. #13
    Join Date
    Jul 2012
    Posts
    24
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: drag mouse problem

    Hi,
    i am not sure if Ogre influence or no
    but i have the mouse press and mouse release event that work
    that's it's code
    mouseReleaseEvent(QMouseEvent* e):
    Qt Code:
    1. void My_app::mouseReleaseEvent(QMouseEvent* e)
    2. {
    3. if(!e->buttons().testFlag(Qt::LeftButton))
    4. {
    5. oldPos = QPoint(invalidMousePoint);
    6. e->accept();
    7. }
    8. else
    9. {
    10. e->ignore();
    11. }
    12. emit mouseRelease(e);
    13. }
    To copy to clipboard, switch view to plain text mode 
    mousePressEvent(QMouseEvent* evt):
    Qt Code:
    1. if(evt->button() == Qt::LeftButton)
    2. {
    3.  
    4.  
    5. Ogre::Real offsetX =(double)evt->pos().x()/(double)width();
    6. Ogre::Real offsetY=(double) evt->pos().y()/(double)height();
    7. move_object(double offsetX ,double offsetY)
    8. }
    9. emit mousePress(evt);
    10. }
    To copy to clipboard, switch view to plain text mode 
    it work mouse press event
    but mouse move event
    Qt Code:
    1. oid QOgreRenderWindow::mouseMoveEvent(QMouseEvent *e)
    2. {
    3.  
    4. if(e->buttons().testFlag(Qt::LeftButton))
    5. {
    6. Ogre::Real offsetX =(double)e->pos().x()/(double)width();
    7. Ogre::Real offsetY=(double) e->pos().y()/(double)height();
    8.  
    9. move_object(offsetX,offsetY);
    10. e->accept();
    11. }
    12. emit mouseMove(e);
    13. }
    To copy to clipboard, switch view to plain text mode 
    the mouse work just when i pree when i move nothing it work

  14. #14
    Join Date
    Sep 2015
    Posts
    50
    Qt products
    Qt5
    Platforms
    Unix/X11
    Thanks
    8

    Default Re: drag mouse problem

    Quote Originally Posted by robel View Post
    Hi,
    i am not sure if Ogre influence or no
    but i have the mouse press and mouse release event that work
    that's it's code
    mouseReleaseEvent(QMouseEvent* e):
    Qt Code:
    1. void My_app::mouseReleaseEvent(QMouseEvent* e)
    2. {
    3. if(!e->buttons().testFlag(Qt::LeftButton))
    4. {
    5. oldPos = QPoint(invalidMousePoint);
    6. e->accept();
    7. }
    8. else
    9. {
    10. e->ignore();
    11. }
    12. emit mouseRelease(e);
    13. }
    To copy to clipboard, switch view to plain text mode 
    mousePressEvent(QMouseEvent* evt):
    Qt Code:
    1. if(evt->button() == Qt::LeftButton)
    2. {
    3.  
    4.  
    5. Ogre::Real offsetX =(double)evt->pos().x()/(double)width();
    6. Ogre::Real offsetY=(double) evt->pos().y()/(double)height();
    7. move_object(double offsetX ,double offsetY)
    8. }
    9. emit mousePress(evt);
    10. }
    To copy to clipboard, switch view to plain text mode 
    it work mouse press event
    but mouse move event
    Qt Code:
    1. oid QOgreRenderWindow::mouseMoveEvent(QMouseEvent *e)
    2. {
    3.  
    4. if(e->buttons().testFlag(Qt::LeftButton))
    5. {
    6. Ogre::Real offsetX =(double)e->pos().x()/(double)width();
    7. Ogre::Real offsetY=(double) e->pos().y()/(double)height();
    8.  
    9. move_object(offsetX,offsetY);
    10. e->accept();
    11. }
    12. emit mouseMove(e);
    13. }
    To copy to clipboard, switch view to plain text mode 
    the mouse work just when i pree when i move nothing it work
    Instead of an emit, just try calling the base implementation. Comment out the emit calls and add calls like these:

    <parent-class to QOgreRenderWindow>::mouseMoveEvent(e);
    <parent-class to QOgreRenderWindow>::mousePressEvent(e);
    <parent-class to QOgreRenderWindow>::mouseReleaseEvent(e);

    This will allow it to continue processing the message as it normally would. if you execute an emit, it's just going to reprocess your slot code.
    Last edited by Caolan O'Domhnaill; 7th November 2015 at 00:50.

Similar Threads

  1. QDockWidget: difference between move() and mouse drag
    By MrRipple in forum Qt Programming
    Replies: 3
    Last Post: 7th December 2013, 08:30
  2. Replies: 4
    Last Post: 18th April 2012, 18:11
  3. Drag/Drop on middle mouse button?
    By joeld42 in forum Qt Programming
    Replies: 0
    Last Post: 21st August 2010, 00:20
  4. incorrect QGraphicsItemGroup mouse drag behavior
    By Gopala Krishna in forum Qt Programming
    Replies: 1
    Last Post: 25th January 2008, 10:05
  5. Mouse Drag selction Issue in QListWidget
    By vishal.chauhan in forum Qt Programming
    Replies: 5
    Last Post: 21st February 2007, 08:55

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Qt is a trademark of The Qt Company.