我对Qt和C++一般都很陌生,所以这可能是一个简单的问题。Qt:执行从另一个类的追加
目前存在的问题:
我想执行的是通过调用另一个类的函数将文本到TextEditField功能。我可以调用函数和文本通过相同的类追加,但是当我尝试从另一个类调用它时,它不会执行追加并且不会出现错误。
为简单起见,我将只需要调用我的类A和B.
Class A // The class that was created automatically by Qt
Class B // A class that i made myself
A类有一个名为 “记录” 功能,它看起来像这样:
void ClassA::logger()
{
ui->Logg->append("A log message"); // Straight forward, it appends the text
}
我可以请拨打ClassA :: logger来自A类中的其他功能,一切正常,如下所示:
void ClassA::MakeALogg()
{
logger(); // The logger function appends the text to TextEditField Logg
}
但是,当我尝试从另一个函数执行记录器功能,它将无法正常工作。我当前的代码看起来像这样在ClassB的:
void ClassB::MakeALogg()
{
ClassA A;
A.logger(); // The text doesn't get appended to TextEditField Logg via external class
}
调用记录仪()函数,并没有错误给地方时,这是行不通的。
最终的结果是让这个被启用以获得传递到logger()函数的QString,这是我现在可以在这个时候做的事,如果我通过相同的类调用它,例如ClassA::MakeALogg() to ClassA::logger(QString LogMSG)
。但我想首先确保我可以从另一个类访问ui->函数。
我的理论
嗯,我想,问题在于以某种形式错过实例化的类此特定exection的(例如UI类型)。我可以在这个阶段调用A类到B类的函数,并返回{for example ClassA::GiveNumber() to ClassB::NumberCalculator()
}。但是当它涉及到用户界面时,由于某种奇怪的原因无法建立联系。
我也试图在ClassB的的头文件,使关系到它,但没有工作,要么:
class ClassA;
class ClassB
{
public:
ClassA * PointToClassA;
}
Void ClassB::Logger()
{
PointToClassA = new ClassA;
ClassA->logger();
}
在你的伪代码中似乎没有问题。你能做两件事吗?首先是切换一个断点,然后逐步进行(它在每个体面的IDE中,就像优秀的QtCreator一样)?第二点是:你可以发布你的实际代码,特别是'void ClassB :: MakeALogg()'方法吗? – Fezvez
[Qt问题在处理类GUI访问时可能出现的重复](http://stackoverflow.com/questions/7311128/qt-problem-when-working-over-classes-gui-access) –
所以你不喜欢对你的其他问题的答案,也不想等待一段时间来获得更好的答案?好的,在这种情况下,你只需要重新发布完全相同的问题;) –