Qt-另一个类中的mainwindow类对象不';工作不好 void MyAnotherClass::mySlot(){ 主窗口; window.myFunction();} void主窗口::myFunction(){ qDebug()text编辑->设置文本(“我为什么不工作?”); }

Qt-另一个类中的mainwindow类对象不';工作不好 void MyAnotherClass::mySlot(){ 主窗口; window.myFunction();} void主窗口::myFunction(){ qDebug()text编辑->设置文本(“我为什么不工作?”); },qt,class,object,slot,mainwindow,Qt,Class,Object,Slot,Mainwindow,为什么qDebug在这种情况下运行良好,但ui->。。。不?如何修复它 编辑:解决方案: `QPlainTextEdit*指针; 主窗口构造函数{ 指针=ui->qPlainTextEdit;} 其他人的类方法{ 指针->追加纯文本(“它工作”); }`在MyAnotherClass::mySlot()中创建MainWindow类的新实例。此插槽结束时,将删除此实例。所以你看不到任何变化 void MyAnotherClass::mySlot(){ MainWindow window; wind

为什么qDebug在这种情况下运行良好,但ui->。。。不?如何修复它

编辑:解决方案: `QPlainTextEdit*指针; 主窗口构造函数{ 指针=ui->qPlainTextEdit;}

其他人的类方法{ 指针->追加纯文本(“它工作”);
}`

MyAnotherClass::mySlot()中创建
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?");
}
相反,您应该在
MyAnotherClass
中的某个地方设置指向主窗口的指针:

void MyAnotherClass::mySlot() {
    MainWindow window;  //new instance created
    window.myFunction();
} //here this instance deleted
然后你可以做这样的事情:

MyAnotherClass
{
     .......   
    private slots:
        void mySlot();

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

当然,您应该先初始化这个指针,然后才能使用它。

如何初始化这个指针?你知道这样做的好方法吗<代码>类MyAnotherClass:public QplaintExtendit{private:MainWindow*\u MainWindow;}
根据代码设计,可能有几种方法。您可以将其传递到构造函数或某些方法中。或者,您可以将
main窗口
设置为单例。我的另一个类是MyQPlaintTextEdit,您可以在exit_slot()的mainwindow.cpp和单击的按钮上找到它的代码;你能告诉我如何在我的情况下使用指针吗?
void MyAnotherClass::mySlot() {
    _mainWindow->myFunction();
}