2014-12-06 11 views
0

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

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. Как это можно сделать? Где я совершил ошибку?

ответ

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++. Нужно сказать, что эти ситуации объясняют, почему авторы провели с ними свою жизнь. – lpapp

+0

Спасибо! Я продолжу свое исследование –

 Смежные вопросы

  • Нет связанных вопросов^_^