Qt QGraphicsView:在选项卡中显示QGraphicsView
Qt QGraphicsView: Displaying QGraphicsView inside a tab
我将描述我的问题。
我有一个选项卡类,大致如下:
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
可见,我必须写这样的东西:
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
继承的类,并添加我自己的函数,但我不太确定如何做到这一点,以便它对我有效。
感谢您的回答和评论。
这很可能是因为Tab
没有布局(或者您甚至没有将view
添加为Tab
小部件的子部件)。您没有显示Tab
构造函数,所以我不能确定。
如果选项卡只能包含一个视图,则需要从QGraphicsView
而不是QWidget
派生Tab
类。应该删除额外的view
类成员,并且可以像使用QGraphicsView
对象一样使用Tab
对象。
如果一个选项卡可以包含其他小部件,那么您应该向Tab
对象添加一个布局,并向该布局添加视图和其他子项。示例:
Tab::Tab() {
QVBoxLayout* main_layout = new QVBoxLayout(this);
view = new QGraphicsView();
main_layout->addWidget(view);
}
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 程序崩溃并显示"std::out_of_range"错误
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 从数据库实时显示QT c++中的数据
- 如何在 QGraphicsView 中显示图像
- QStateMachine如何在不同的QState中显示和隐藏QGraphicsView和QObject
- QGraphicsView未显示在主窗口中
- Qt QGraphicsView:在选项卡中显示QGraphicsView
- 在QLabel/QGraphicsView中显示Dicom图像
- Qt框架:如何在布局中显示QGraphicsView
- 如何刷新 QGraphicsView 以显示 QGraphicsScene 背景中的更改
- QGraphicsView什么也没显示
- 可以将OpenGL用于我的QGraphicsItems加快在QGraphicsView中的显示速度
- 如何在QGraphicsView角落的QGraphicsScene中显示某个点
- 在QGraphicsView/QGraphicsScene上显示一系列图像