我正在创建一个Qt小部件(我们称之为A
),它实际上是一个子类化的QGraphicsView。但是,我不想在我的小部件中公开QGraphicsView方法,只需要基本的QWidget接口和我自己的一些方法。因此,我想将A
的一个实例封装为一个简单的QWidget子类的成员,我们将其称为B
。
现在我想知道,画这个的正确方法是什么?到目前为止,我已经给了B
一个布局,其唯一的项目是A
成员。但这感觉有些不对劲;例如,我需要覆盖默认的布局设置,以避免添加额外的边距等。这让我觉得有一些正确的方法可以做到这一点,我错过了。有什么想法吗?
修改:在RedX'回答的设置中,我的问题变为:在此设置中使用 gv
的正确方法是什么?给A
布局并向其添加gv
,或覆盖A
的绘画方法,而不是使用gv
的那些?或其他什么?
答案 0 :(得分:3)
我认为没有更好的方法。如果您不想使用布局,可以像这样覆盖父级的resizeEvent():
void A::resizeEvent( QResizeEvent* ) {
m_graphicsView->setGeometry( QRect( 0, 0, size() ) );
}
答案 1 :(得分:0)
我认为你是想这样做的?
class A : public QWidget{
QGraphicsView* gv; //use this to do whatever you need
};
这应该公开一个QWidget,在内部你可以使用gv
从QGraphicsWidget做你需要的任何事情。