首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qt图形场景中的qt图形项对齐

qt图形场景中的qt图形项对齐
EN

Stack Overflow用户
提问于 2013-04-09 18:52:24
回答 2查看 2.1K关注 0票数 1

我有一个图形视图,其中包含一个场景与一些图形项目。如何使这些图形项显示在场景的左侧而不是中心?

我已经考虑了很多想法,但都没有成功。

EN

回答 2

Stack Overflow用户

发布于 2013-04-09 19:00:11

最简单的方法是添加一个不可见的QGraphicsRectItem作为第一项。

然后添加其他项作为第一个项的子项。

第一个项目的中心是坐标的中心。

代码语言:javascript
复制
QGraphicsScene *scene = new QGraphicsScene(widget.graphicsView);

// ....

QGraphicsRectItem *frame = scene->addRect(-100,-100,100,100);
frame->setPen(Qt::NoPen);

// ....

// Add new items as children of frame
// Align them relative to their parent
代码语言:javascript
复制
                           ^
                           |
                           |
        -100,100           |            100,100
            +-----------------------------+
            |              |              |
            |              |              |
            |              |              |
            |              |              |
            |              |              |
            |              |              |
            |              |              |
---------------------------+------------------------>
            |              |              |
            |              |              |
            |              |              |
            |              |              |
            |              |              |
            |              |              |
            |              |              |
            +-----------------------------+
        -100,100           |            100,-100
                           |

要使其知道窗口大小,请覆盖以下方法:

代码语言:javascript
复制
class MainForm : public QMainWindow
{
//...

QGraphicsScene *scene;     // Move it here
QGraphicsRectItem *frame;  // Move it here

protected:
    virtual void resizeEvent(QResizeEvent * event);
    virtual bool event(QEvent * event);
    virtual void resizeAction();
//...
};

void MainForm::resizeAction()
{
    QRectF rect(field->rect());
    widget.graphicsView->setSceneRect(rect);
    widget.graphicsView->fitInView(rect, Qt::KeepAspectRatio);
}

void MainForm::resizeEvent(QResizeEvent * event)
{
    resizeAction();
    QMainWindow::resizeEvent(event);
}

bool MainForm::event(QEvent * event)
{
    if (event->type() == QEvent::Show)
        resizeAction();

    return QMainWindow::event(event);
}
票数 1
EN

Stack Overflow用户

发布于 2013-11-10 15:49:16

代码语言:javascript
复制
Scene_item.setSceneRect(x0,y0,x1,y1);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15899956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档