我将描述我的问题。
我有一个选项卡类,看起来大致如下:
class Tab : public QWidget
{
public:
Tab();
...
private:
...
QGraphicsView *view;
...
};
在Tab()
我创建view
. 现在在我的主窗口中,我想要一个QTabWidget
,其中包含一些选项卡,其中每个选项卡显示一个QGraphicsView
. 它看起来大约是这样的:
class MainWindow : QMainWindow
{
public:
MainWindow();
...
private:
...
QTabWidget *tabWidget;
...
};
和
MainWindow::MainWindow()
{
tabWidget = new QTabWidget(this);
tabWidget->addTab(new Tab, tr("tab 1"));
tabWidget->addTab(new Tab, tr("tab 2"));
setCentralWidget(tabWidget);
}
这不会QGraphicsView
在选项卡中显示 s。为了使QGraphicsView
s 可见,我必须写这样的东西:
MainWindow::MainWindow()
{
tabWidget = new QTabWidget(this);
tab1 = new Tab;
tab2 = new Tab;
tabWidget->addTab(tab1->view, tr("tab 1"));
tabWidget->addTab(tab2->view, tr("tab 2"));
setCentralWidget(tabWidget);
}
并且view
必须在课堂上公开Tab
,这看起来很糟糕。该类Tab
有一些私有函数,用于构造view
,我不想view
在Tab
.
如何解决这个问题?
我正在考虑创建一个类,它继承QGraphicsView
并添加我自己的函数,但我不太确定如何做到这一点,以便它适用于我。
感谢您的回答和评论。