У меня вопрос о сигналах и слотах. В моем приложении я хочу подключить сигнал от одного объекта к 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
. Как это можно сделать? Где я совершил ошибку?
Мне жаль это говорить, но вам нужно изучить основные 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);
}