我上了2节课:
- MainWindow(默认类)
- ExtraClass(我自己创造的)
在MainWindow类中,我创建了一个名为“logger”的公共函数。此功能如下所示:
// Takes in a QString and appends it to a QTextEdit.
void MainWindow::logger(QString Log_MSG)
{
ui->Logg->append(Log_MSG);
}
此记录器函数在其自己的类MainWindow
内按预期工作,但当我尝试将MSG从类ExtraClas
传入记录器时,它突然无效。
我从MainWindow
到ExtraClass
访问记录器的方法:
MainWindow Con;
Con.logger("The Message the will get appended to ui->logg");
所以问题是,我错过了什么?我没有收到任何错误,应该附加到QTextEdit
日志的文本“Log_MSG”不会执行。
编辑:
我已经尝试从“MainWindow类”访问其他功能 这工作,但当我尝试传递一个字符串这个特殊功能“记录器” 从另一个班级没有任何事情发生。
对于一个例子:
MainWindow MainWindow;
int ANumber = MainWindow.GiveMeAValue(); // This works
但是当我这样做的时候:
MainWindow MainWindow;
MainWindow.logger("Log MSG"); // This dosen't work
我的猜测是问题在于附属物 一个QString传入主类,该类由Qt自动创建(有类似ui-> abc的东西)来自另一个类。但在我目前 对Qt的理解水平我真的不知道在哪里 排除问题我甚至没有收到错误。
答案 0 :(得分:3)
访问记录器的代码错误(甚至不应该编译)。
首先,每次调用此代码所在的函数时,都会创建一个新的本地MainWindow
对象(Con
)。然后你尝试在类上调用方法而不是在对象上调用。如果它是静态方法(我怀疑,由于使用ui
),您必须编写MainWindow::logger()
。如果它不是静态方法,那么您需要在特定的MainWindow
实例上调用它。但是,您不应每次都创建本地MainWindow
,而应该向MainWindow
对象提供正确的应用程序ExtraClass
实例。
如果所有这些对您来说都是陌生的,那么在深入研究Qt之前,您应首先深入了解基础C ++编程。