Опишу свою проблему.Qt QGraphicsView: отображение QGraphicsView внутри вкладки
У меня есть класс для вкладки, которая выглядит примерно так:
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
с в закладках. Для того, чтобы 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
и добавляет мои собственные функции, но я не совсем уверен, как это сделать, чтобы он работал для меня.
Благодарим за ответы и комментарии.
Да! Работает с макетом. Я просто не понимаю, как это работает. Можете ли вы дать мне ссылку на какой-то текст, где я могу прочитать об этом? Спасибо. – pizet
Для начала: http://qt-project.org/doc/qt-4.8/layout.html –