繁体   English   中英

Qt小部件中的选择区域

[英]Selection area in Qt widget

我写这篇文章是因为我在选择区域方面有问题。

如果单击Windows桌面并拖动鼠标,将看到选择区域。 我正在尝试实现大致相同的事情。

您有什么想法,如何实现?

感谢您的任何建议。

它被称为“橡皮筋” 您需要找到一个使用QRubberBand类的示例。 我不能从一个相对较大的项目中分离出一个小样本,但是总的来说,它不是很复杂,只是可以工作。

您可以使用QRubberBand 当您想在小部件中实现Qt文档时,这是一个示例:

 void Widget::mousePressEvent(QMouseEvent *event)
 {
     origin = event->pos();
     if (!rubberBand)
         rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
     rubberBand->setGeometry(QRect(origin, QSize()));
     rubberBand->show();
 }

 void Widget::mouseMoveEvent(QMouseEvent *event)
 {
     rubberBand->setGeometry(QRect(origin, event->pos()).normalized());
 }

 void Widget::mouseReleaseEvent(QMouseEvent *event)
 {
     rubberBand->hide();
     // determine selection, for example using QRect::intersects()
     // and QRect::contains().
 }

如果要在其他类中实现它并希望显示在小部件中,则应注意坐标系。 这是因为event->pos()与小部件的坐标系不同,因此应使用event->pos()代替:

myWidget->mapFromGlobal(this->mapToGlobal(event->pos()))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM