首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在Qt中显示图形场景

无法在Qt中显示图形场景
EN

Stack Overflow用户
提问于 2014-07-03 18:00:09
回答 2查看 191关注 0票数 0

我在Qt小工具应用程序中创建了一个图形场景。应用程序成功运行,但未显示任何图形场景。

我用来创建场景的代码是:

代码语言:javascript
运行
复制
cadviewer::cadviewer(QGraphicsScene *parent) :
QGraphicsScene(parent)
{
QGraphicsScene scene;
scene.addLine(10,10,20,20);
QGraphicsView view(&scene);

view.show();
qDebug() << "cadviewer";
} 

对上述类的调用是在另一个类中进行的。相同的代码是:

代码语言:javascript
运行
复制
graphicsarea::graphicsarea(QWidget *parent) :
QWidget(parent),
ui(new Ui::graphicsarea)
{
ui->setupUi(this);
cadviewer viewer;
qDebug() << "graphicsarea";
}

这两个类中使用的qDebug正在运行。

我找不出遗漏的是什么。能帮我解决如何在主窗口中显示图形场景吗?

EN

回答 2

Stack Overflow用户

发布于 2014-07-03 18:10:16

我不会重复棘轮怪胎告诉你的。克服这个问题的一个解决方案就是在你的类属性中添加QGraphicsScene scene;QGraphicsView view;

这样,在构造函数结束时,它们仍然是活动的和显示的!

票数 0
EN

Stack Overflow用户

发布于 2014-07-03 18:11:32

您在构造函数中只声明了一个局部变量。在程序离开构造器后,你的"cadviewer查看器“将被删除。

代码语言:javascript
运行
复制
graphicsarea::graphicsarea(QWidget *parent) :
QWidget(parent),
ui(new Ui::graphicsarea)
{
ui->setupUi(this);
cadviewer viewer; //delete after constructor
qDebug() << "graphicsarea";
}

尝试将其用作类属性/成员。当应用程序离开构造函数时,类成员仍然是活动的。

更新:

下面是一个如何将你的graphicscene添加到该区域的小示例:

代码语言:javascript
运行
复制
QLayout* testLayout = new QVBoxLayout();
cadviewer* view = new cadviewer();
layout->addWidget(view);
graphicsarea* area = new graphicsarea();
area->setLayout(testLayout);
area->show();

其他布局也是可能的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24550629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档