【问题标题】:How to draw QGraphicsItem in a MFC view如何在 MFC 视图中绘制 QGraphicsItem
【发布时间】:2011-02-17 12:44:22
【问题描述】:

我开始在我的应用程序中使用 Qt。我的应用程序是基于 MFC 的。我想在我当前的 MFC 视图中绘制一些 QGraphicsItems,可以吗?

您可能会说可以通过在 MFC 视图中使用 QWinWidget 托管 QGraphicsView 来完成,但是这不起作用。因为我的画布(MFC 视图)支持缩放和旋转,而 QGraphicsView 本身不支持。当我缩放 QGraphicsItem 时,QGraphicsView 显示滚动条而不是放大自身。

有什么建议吗?谢谢!

【问题讨论】:

    标签: qt mfc qt4 qgraphicsitem


    【解决方案1】:

    理论上你可以使用QGraphicsScene::paint在缓冲区中用QGraphicsItems绘制场景,然后将其绘制到MFC视图,但这没有任何意义......

    QGraphicsView 到底有什么问题?你看过它的rotate()scale()translate()shear()函数吗?

    【讨论】:

    • QGraphicsView 实际上是一个QWidget。当我将其缩放到大尺寸时,它会缩放其内容(QGraphicsScene)并显示滚动条本身。当我旋转它时,它也会旋转它的内容而不是它本身。我真正想要的是 QGraphicsTextItem。我想在 MFC 视图中显示它,当我在 3d 视图中缩放画布或旋转画布时,文本也应该缩放或旋转。我还可以编辑画布中的文本。是否有可能使 QGraphicsView 具有这种能力?使其没有边框并沿其内容调整自身(QGraphicsScene)?
    【解决方案2】:

    您可以通过将ScrollBarPolcies 设置为Qt::ScrollBarAlwaysOff 来关闭QGraphicsView 滚动条的显示。 (QGraphicsView 是 QAbstractScrollArea 的子类。)

    我不确定我是否理解旋转 QGraphicsView 本身而不是内容的意思。没有滚动条,我看不出区别。 QGraphicsItem 的许多功能(如您所指出的编辑)也取决于 QGraphicsScene 和 QGraphicsView 中的事件处理才能工作。我认为仅将 QGraphicsItem 插入 MFC 视图不会满足您的要求。

    【讨论】:

    • 我可能需要让 QGraphicsView 占据整个画布并使其半透明。正如您所说,没有 QGraphicsView,编辑功能也可能会丢失。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多