QT Сигнал / Слот

0

У меня вопрос о сигналах и слотах. В моем приложении я хочу подключить сигнал от одного объекта к textEdit в диалоговом окне. Мой сигнал испускает QString; если я нарушаю инкапсуляцию (создавая публичный пользовательский интерфейс вместо частного) и подключаю сигнал непосредственно к textEdit он работает. Но я чувствую, что это не так. Если я сделаю что-то вроде следующего:

connect(m_osgWidget->picker.get(), SIGNAL(setX(QString)), m_addAgentDlg, SLOT(getX(QString)));

где:

void getX(QString)
{
    this->ui.textEdit(QString);
}

Это дает мне ошибку, что я не могу использовать QString в этом this->ui.textEdit(QString); Мне нужен QString из setX() вставленного в textEdit из m_addAgentDlg. Как это можно сделать? Где я совершил ошибку?

Теги:
qt
qmake
qt-signals
qtgui

1 ответ

2
Лучший ответ

Мне жаль это говорить, но вам нужно изучить основные C++. Правильный синтаксис - это для таких вещей в C++ с Qt:

connect(m_osgWidget->picker.get(), SIGNAL(setX(const QString&)), m_addAgentDlg, SLOT(getX(const QString&)));

// Why do you call it getX? Should it be called setText instead?
void getX(const QString& string)
{
    ui->textEdit->setText(string);
}
  • 0
    Ну, я все еще учусь, так что нет необходимости говорить. Я испробовал все возможные типы кода, опубликованные выше, включая тот, который вы предоставили. Не работает Вот почему я спрашиваю это здесь. Я продолжаю получать сообщения, что в объекте нет такого слота.
  • 2
    @AzraithSherkhan: вы должны перезапустить qmake, но, пожалуйста, купите книгу по C ++. Надо сказать, что именно в этих ситуациях авторы провели с ними свою жизнь.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню