Я довольно новичок в Qt и C ++ в целом, так что это может быть простой проблемой.
Текущая проблема:
Я хочу выполнить функцию, котораядобавляет текст в TextEditField, вызывая функцию из другого класса.Я могу вызвать функцию, и текст добавляется через тот же класс, но когда я пытаюсь вызвать его из другого класса, он просто не выполнит добавление и не выдаст ошибок.
Чтобы упростить его, я просто вызовумои классы A и B.
Class A // The class that was created automatically by Qt
Class B // A class that i made myself
Класс A имеет функцию "logger", которая выглядит следующим образом:
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 передавался в функцию logger (), что я сейчас могу сделать очень сложно, если вызову его через тот же класс, например ClassA::MakeALogg() to ClassA::logger(QString LogMSG)
.Но сначала я хочу убедиться, что я могу получить доступ к функции ui-> из другого класса.
Моя теория
Ну, я думаю, что проблема заключается в некоторой формесоздания экземпляра мисс для класса для этого конкретного исключения (например, тип 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();
}