【发布时间】:2014-05-06 16:30:04
【问题描述】:
我有一个QGraphicsView 并在上面放置了QGraphicsScene。在舞台上我放置了QGraphicsItem,并检查了视图边框小部件的输出项:
if(!(ui->area->sceneRect().contains((ui->area->mapFromScene(item->boundingRect())).boundingRect()))){...}
我的问题是场景超出了小部件的大小,即项目可以移动到可见小部件的边界之外。然后,触发交叉事件,这意味着场景仍然是有限的矩形。
我将场景设置如下:
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent), ui(new Ui::MainWindow){
scene= new QGraphicsScene(ui->area);
scene->setSceneRect(0,0,ui->area->size().width(),ui-area->size().height());
scene->setBackgroundBrush(QBrush(Qt::black));
ui -> area -> setRenderHints ( QPainter :: Antialiasing
| QPainter :: SmoothPixmapTransform
| QPainter :: TextAntialiasing );
ui->area-setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);
ui->area-setCacheMode(QGraphicsView::CacheBackground);
ui->area-setRenderHint(QPainter::Antialiasing,false);
ui->area->setInteractive(true); ui-area-setScene(scene);
ui->area->setScene(scene);
....
}
我的错误是什么?
附言在调整主窗口大小时,更多人将不胜感激有关如何实现调整大小小部件(使用场景)的建议?小部件位于QHBoxLayout。
【问题讨论】: