在GUI上访问时,Qt问题

时间:2011-09-05 17:28:48

标签: c++ qt

我上了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传入记录器时,它突然无效。

我从MainWindowExtraClass访问记录器的方法:

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的理解水平我真的不知道在哪里 排除问题我甚至没有收到错误。

1 个答案:

答案 0 :(得分:3)

访问记录器的代码错误(甚至不应该编译)。

首先,每次调用此代码所在的函数时,都会创建一个新的本地MainWindow对象(Con)。然后你尝试在类上调用方法而不是在对象上调用。如果它是静态方法(我怀疑,由于使用ui),您必须编写MainWindow::logger()。如果它不是静态方法,那么您需要在特定的MainWindow实例上调用它。但是,您不应每次都创建本地MainWindow,而应该向MainWindow对象提供正确的应用程序ExtraClass实例。

如果所有这些对您来说都是陌生的,那么在深入研究Qt之前,您应首先深入了解基础C ++编程。