Qt - 另一个类中的mainwindow类对象不能很好地工作

时间:2017-05-13 18:17:25

标签: qt class object slot mainwindow

void MyAnotherClass::mySlot(){
MainWindow window;
window.myFunction();}

void MainWindow::myFunction(){

qDebug() << "THIS qDebug works well but ui do NOT";

ui->textEdit->setText("Why i do not working?");
}

为什么qDebug在这种情况下工作正常,但是ui-> ...不是吗?如何解决?

编辑:解决方案: `QPlainTextEdit *指针; MainWindow构造函数{ 指针= UI-&GT; qPlainTextEdit;}

另一个类的方法{ pointer-&gt; appendPlainText(&#34;它工作&#34;); }`

1 个答案:

答案 0 :(得分:0)

您在MainWindow内创建MyAnotherClass::mySlot()类的新实例。当此插槽结束时,将删除此实例。所以你看不到任何变化。

void MyAnotherClass::mySlot() {
    MainWindow window;  //new instance created
    window.myFunction();
} //here this instance deleted

而不是这个,你应该在MyAnotherClass

内的某个地方指向主窗口
MyAnotherClass
{
     .......   
    private slots:
        void mySlot();

    private:
        MainWindow* _mainWindow;
      ...............
};

然后你可以做这样的事情:

void MyAnotherClass::mySlot() {
    _mainWindow->myFunction();
}

当然,在使用它之前,你应该以某种方式初始化这个指针。