Проблема Qt при работе над классами GUI доступа - PullRequest
0 голосов
/ 05 сентября 2011

Я получил 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 s, он неожиданно не работает.

Мой подход к доступу к логгеру от MainWindow до ExtraClass:

MainWindow Con;
Con.logger("The Message the will get appended to ui->logg");

Итак, вопрос, что я пропустил? Я не получаю никаких ошибок, и текст "Log_MSG", который должен быть добавлен в QTextEdit Журнал, не выполняется.

  • Извините за стиль, я просто не понимаю, как заставить его выглядеть хорошо.

EDIT:

Я уже пытался получить доступ к другим функциям из "класса MainWindow" и это работает, но когда я пытаюсь передать строку, эта особенная функция "logger" из другого класса ничего не происходит.

Например:

MainWindow MainWindow; int ANumber = MainWindow.GiveMeAValue(); // This works

Но когда я делаю это:

MainWindow MainWindow; MainWindow.logger("Log MSG"); // This dosen't work

Я предполагаю, что проблема заключается в добавлении QString передается в основной класс, который был автоматически создан Qt (например, ui-> abc) из другого класса. Но в моем нынешнем уровень понимания Qt я действительно не знаю, где устранить неполадки, потому что я даже не получаю сообщение об ошибке.

1 Ответ

3 голосов
/ 05 сентября 2011

Ваш код для доступа к логгеру неверен (он даже не должен компилироваться).

Во-первых, каждый раз, когда вы вызываете функцию, в которой находится этот код, вы создаете новый локальный MainWindow объект (Con). И тогда вы пытаетесь вызвать метод в классе, а не в объекте. Если это статический метод (в чем я сомневаюсь из-за использования ui), вам придется написать MainWindow::logger(). Если это не статический метод, вам нужно вызвать его для определенного экземпляра MainWindow. Но вместо создания локального MainWindow каждый раз, вы должны предоставить правильный экземпляр MainWindow приложения вашему объекту ExtraClass.

Если все это звучит чуждо вам, вы должны сначала немного углубиться в фундаментальное программирование на C ++, прежде чем углубляться в Qt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...