Qt - 另一个 class 中的主窗口 class 对象运行不正常
Qt - mainwindow class object in another class doesn't work well
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 *指针;
主窗口构造函数{
pointer=ui->qPlainTextEdit;}
其他人的class方法{
pointer->appendPlainText("It works");
}`
您在 MyAnotherClass::mySlot()
中创建了 MainWindow
class 的新实例。当此插槽结束时,此实例将被删除。所以你看不到任何变化。
void MyAnotherClass::mySlot() {
MainWindow window; //new instance created
window.myFunction();
} //here this instance deleted
你应该在 MyAnotherClass
:
的某处指向你的主 window 而不是这个
MyAnotherClass
{
.......
private slots:
void mySlot();
private:
MainWindow* _mainWindow;
...............
};
然后你可以这样做:
void MyAnotherClass::mySlot() {
_mainWindow->myFunction();
}
当然,你应该先初始化这个指针,然后才能使用它。
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 *指针; 主窗口构造函数{ pointer=ui->qPlainTextEdit;}
其他人的class方法{ pointer->appendPlainText("It works"); }`
您在 MyAnotherClass::mySlot()
中创建了 MainWindow
class 的新实例。当此插槽结束时,此实例将被删除。所以你看不到任何变化。
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();
}
当然,你应该先初始化这个指针,然后才能使用它。