qt - 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();
}
我的问题显示在此视频中:
https://imgur.com/a/TMpUz0l
如您所见,如果我从左上到右下绘制矩形,则矩形会平滑绘制。但否则,这幅画就不是连续的。
以下是我的代码的一些事件:
void Graph::onMousePress(QMouseEvent* event){
if ((event->buttons() & Qt::RightButton) == Qt::RightButton) {
m_RMBPressed = true;
m_globalOrigin = QPoint(event->globalPos().x(), event->globalPos().y());
if (!m_rubberBand) {
m_rubberBand = new QRubberBand(QRubberBand::Rectangle, qobject_cast<QWidget*>(this));
}
m_rubberBand->setGeometry(QRect(m_globalOrigin, QSize()));
m_rubberBand->show();
}
}
void Graph::onMouseRelease(QMouseEvent* event){
m_RMBPressed = false;
if (m_rubberBand) {
m_rubberBand->hide();
}
}
void Graph::onMouseMove(QMouseEvent* event){
if (m_RMBPressed) {
auto rectangle = QRect(QPoint(event->globalPos().x(), event->globalPos().y()), m_globalOrigin).normalized();
m_rubberBand->setGeometry(rectangle);
m_rubberBand->update();
}
}
我试图交换 的坐标QRect
,删除.normalized()
函数,然后更正矩形坐标,但都没有奏效。任何帮助表示赞赏。
解决方案
推荐阅读
- asp.net-core - 在运行时更改 Kestrel 端口
- python - 带有 datetimeindex 的 Pandas get_loc 失败
- c - 从给定文件中索引单词的程序在打印某个索引时返回一个空白区域
- ar.js - AR.js 是否可以更新 gps-entity-place 的位置?
- javascript - 从数组中获取特定值并将这些值转换为另一个数组
- java - 无法在 java 中使用使用 ObjectInputStream 和 SealedObject 的 readObject()。获取运行时错误
- ios - AVPlayerItem externalMetadata 无法识别的选择器
- javascript - 如何在 Sequelize 中创建关联
- python - 我在 python 中有一个数组,我想将它转换为一维数组
- materialize - 实现 CSS 悬停效果无法正常工作