qt使用小部件崩溃

qt use widget crash

本文关键字:崩溃 小部 qt      更新时间:2023-10-16

我有一个类:

class gameClientInteraction : public QMainWindow

带有,在.h:中

private :
QTextEdit* console; 

我的构造函数是这样的:

gameClientInteraction::gameClientInteraction()
{ 
// Menus
QMenu *menuFichier = menuBar()->addMenu("&Jeu");
QAction *actionQuitter = new QAction("&Quitter", this);
menuFichier->addAction(actionQuitter);
connect(actionQuitter, SIGNAL(triggered()), qApp, SLOT(quit()));

// View
QGraphicsView *theGraphicsView = new QGraphicsView(this);
theGraphicsView->setFixedSize(605,605);
QTextEdit* console = new QTextEdit(this);
console->setGeometry(0,625,600,100);
console->setReadOnly(true);
console->append("Bienvenue !");
setCentralWidget(theGraphicsView);
//Scene
theGraphicsView->setScene(m.afficheMap());//afficheMap give me a QGraphicsScene*
}

我有一个函数,当我启动程序时,它会使程序崩溃(当我对指令进行注释时也没关系(。

   void gameClientInteraction::msgConsole(QString msg){
   console->append(msg);
}

那么,为什么它会崩溃与这个指令?

通过声明一个同名的本地指针,您已经在构造函数中隐藏了类成员变量console。换句话说,这个:

QTextEdit* console = new QTextEdit(this);

应该是这样的:

console = new QTextEdit(this);

作为替代方案,可以考虑使用初始化列表:

gameClientInteraction::gameClientInteraction() : console(new QTextEdit(this))
{
    // constructor code goes here
    console->setGeometry(0,625,600,100);
    console->setReadOnly(true);
    console->append("Bienvenue !");
}