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;); }`
答案 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();
}
当然,在使用它之前,你应该以某种方式初始化这个指针。