【问题标题】:Getting the size of a QGraphicsView获取 QGraphicsView 的大小
【发布时间】:2011-02-24 10:52:24
【问题描述】:

我想知道某个QGraphicsView的大小。它的大小不是固定的,因为小部件是网格布局的一部分。我尝试使用 this->ui->myGraphicsView->width() 及其等效高度,但这些值并不准确。

如何获取QGraphicsView 的当前大小?

【问题讨论】:

  • 你想知道QGraphicsView->viewport()的大小吗?

标签: c++ qt qgraphicsview


【解决方案1】:

我的 QGraphicsView 也经常收到 100x30 的大小。原来我是在 QGraphicsView 显示之前询问它的大小。

将初始化代码移至 showEvent 后,我​​得到了正确的尺寸。

【讨论】:

    【解决方案2】:

    如果你想知道QGraphicsView的实际大小,QGraphicsView::size(); 如果你只想知道 QGraphicsView 的内容大小,QGraphisView::viewport().size();

    【讨论】:

    • QGraphicsView::size() (width 100, height 30) 和 QGraphics::viewport() (width 94, height 24) 似乎都报告了不正确的尺寸。我正在尝试在 MainWindow 的构造函数中检索宽度/高度 - 这会造成问题吗?在我尝试检索大小之前调用ui->setupUi(this);
    • 试试这个 => ui->graphicsView->geometry().width()
    • 我仍然得到宽度 100,高度 30。
    • 我尝试了以下函数: size() viewport() geometry() sizeHint() sizeIncrement() sceneRect() baseSize() sizeHint() frameSize() rect() normalGeometry() QAbstractScrollArea *area = qobject_cast(ui->graphicsView); area->size() 但结果似乎还是不对。
    【解决方案3】:

    在 MainWindow 的构造函数中检索宽度/高度

    这就是问题所在!小部件尚未绘制,您正在询问它的大小。使用 eventshowEventpaintEvent 等其他事件在小部件的初始化过程中获得正确的大小。

    【讨论】:

      【解决方案4】:

      回答: 调用MainWindow::show()后,获取大小。

      说明: 我和彼得有同样的问题。在像 MainWindow::MainWindow() 这样的小部件构造函数中,您无法在网格布局中获得像 QGraphicsView 这样的小部件的正确大小,因为在该构造函数中,小部件的大小和位置未确定。因此,在 MainWindow::MainWindow() 中,您必须调用 show(),然后获取视图或其他小部件的大小。

      【讨论】:

        【解决方案5】:

        我和你有同样的问题。 QGraphicsView.size() 始终是 return (100,30)。我已经在我的项目中解决了这个问题。

        查看下面的代码是这样的

        ...in a QTabWidget class...
        def addANewTab(self):
          view = QGraphicsView()
          ...set view param...
          index = self.addTab(view, 'test')
          view.size() # it will return (100,30)
          self.setCurrentIndex(index)
          view.size() # it will return correct size
        

        就像 Bigbell Mercy 回答的那样,你显示确保 QGraphicsView 是显示!

        【讨论】:

          猜你喜欢
          • 2014-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-26
          • 2012-10-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多