我在Qt小工具应用程序中创建了一个图形场景。应用程序成功运行,但未显示任何图形场景。
我用来创建场景的代码是:
cadviewer::cadviewer(QGraphicsScene *parent) :
QGraphicsScene(parent)
{
QGraphicsScene scene;
scene.addLine(10,10,20,20);
QGraphicsView view(&scene);
view.show();
qDebug() << "cadviewer";
}
对上述类的调用是在另一个类中进行的。相同的代码是:
graphicsarea::graphicsarea(QWidget *parent) :
QWidget(parent),
ui(new Ui::graphicsarea)
{
ui->setupUi(this);
cadviewer viewer;
qDebug() << "graphicsarea";
}
这两个类中使用的qDebug正在运行。
我找不出遗漏的是什么。能帮我解决如何在主窗口中显示图形场景吗?
发布于 2014-07-03 18:10:16
我不会重复棘轮怪胎告诉你的。克服这个问题的一个解决方案就是在你的类属性中添加QGraphicsScene scene;
和QGraphicsView view;
。
这样,在构造函数结束时,它们仍然是活动的和显示的!
发布于 2014-07-03 18:11:32
您在构造函数中只声明了一个局部变量。在程序离开构造器后,你的"cadviewer查看器“将被删除。
graphicsarea::graphicsarea(QWidget *parent) :
QWidget(parent),
ui(new Ui::graphicsarea)
{
ui->setupUi(this);
cadviewer viewer; //delete after constructor
qDebug() << "graphicsarea";
}
尝试将其用作类属性/成员。当应用程序离开构造函数时,类成员仍然是活动的。
更新:
下面是一个如何将你的graphicscene添加到该区域的小示例:
QLayout* testLayout = new QVBoxLayout();
cadviewer* view = new cadviewer();
layout->addWidget(view);
graphicsarea* area = new graphicsarea();
area->setLayout(testLayout);
area->show();
其他布局也是可能的。
https://stackoverflow.com/questions/24550629
复制相似问题