C++ 在Qt中使用Qgraphicscene函数时出错

C++ 在Qt中使用Qgraphicscene函数时出错,c++,qt,qgraphicsscene,scene,C++,Qt,Qgraphicsscene,Scene,当我运行一个qt项目时,我会出错,我不知道原因是什么 错误: “class MainWindow”没有名为“SetSCEnvironment”的成员类 “MainWindow”没有名为“setScene”的成员,“mapToScene”没有 在此范围内声明 守则: mainwindow.cpp: MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setup

当我运行一个qt项目时,我会出错,我不知道原因是什么

错误:

“class MainWindow”没有名为“SetSCEnvironment”的成员类 “MainWindow”没有名为“setScene”的成员,“mapToScene”没有 在此范围内声明

守则:

mainwindow.cpp:

 MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
QGridLayout * gridLayout = new QGridLayout(ui->centralWidget);
gridLayout->addWidget( new MainWindow() );

scene = new QGraphicsScene();
    this->setSceneRect(50, 50, 350, 350);
    this->setScene(scene);
 }

 void MainWindow::mousePressEvent(QMouseEvent * e)
{
    double rad = 1;
    QPointF pt = mapToScene(e->pos());
    scene->addEllipse(pt.x()-rad, pt.y()-rad, rad*2.0, rad*2.0,
        QPen(), QBrush(Qt::SolidPattern));
}
mainwindow.h:

private:
Ui::MainWindow *ui;
QGraphicsScene * scene;

首先,不要在其构造函数中创建
MainWindow
的实例。我认为不是
gridLayout->addWidget(newmainwindow())应将视图添加到主窗口:

gridLayout->addWidget(view);
您应该在
qgraphicscene
上调用
setsceninstallet

scene->setSceneRect(50, 50, 350, 350);
QGraphicsView * view = new QGraphicsView(this) ;
view->setScene(scene);
您还应该通过调用
QGraphicsView::setScene
将场景指定给
QGraphicsView

scene->setSceneRect(50, 50, 350, 350);
QGraphicsView * view = new QGraphicsView(this) ;
view->setScene(scene);

mapToScene
QGraphicsView
的一个功能。所以你应该有这样的东西:

QPointF pt = view->mapToScene(e->pos());

最后我要提到的是,您可以拥有一个自定义类,该类继承自
QGraphicsView
,并实现
mousePressEvent
以及与场景和绘图相关的其他内容。然后,您可以在
主窗口中拥有自定义类的实例

谢谢您的回答解决了前两个错误,但我仍然有这个错误:`mapToScene'未在此范围内声明。您在代码中是否也使用了
mapToScene
?对不起,我已经编辑过这篇文章了。它位于mousePressEvent函数中
mapToScene
QGraphicsView
的函数。我已经更新了答案。非常感谢你,现在我没有错误了。但是,当我单击“运行”时,我看不到任何窗口。无论如何,我都会接受你的回答,这非常有帮助。我不建议你运行这段代码,它会消耗你所有的内存。在mainwidow的构造函数中为mainwindow分配内存。构造函数调用另一个构造函数,该构造函数调用另一个abd另一个。你需要完全重写你的代码。