Привет,сделал плагин для поиска инфы о фильмах на _kinopoisk.ru, но немного застрял
Плагин работает нормально, все парсит и приводит к нужному формату, но вот вынести данные в основное приложение не получается. Делал как в примере книги
Qt 4. Программирование GUI на С++, но дело в том что там пример чисто обработки функции. А так как у меня последний результат вычисляется в
QNetworkAccessManager::finised(), не пойму как выдрать информацию от туда. Пытался обратиться к интерфейсу приложения с самого плагина, но почему-то не получается
.
Интерфейс у меня такой :
C++ (Qt)
#include "PluginsWindow.h"
class QString;
class QStringList;
class PluginInterface {
public:
PluginInterface() {}
virtual ~PluginInterface() {}
virtual QStringList operations() const = 0;
virtual void operation() = 0;
};
Q_DECLARE_INTERFACE(PluginInterface,
"com.mysoft.Application.PluginInterface/1.0"
)
В приложении плагин вызывается:
C++ (Qt)
// ----------------------------------------------------------------------
void PluginsWindow::addToMenu(QObject* pobj)
{
if (!pobj) {
return;
}
PluginInterface* pI = qobject_cast<PluginInterface*>(pobj);
if (pI) {
QStringList lstOperations = pI->operations();
foreach (QString str, lstOperations) {
QAction* pact = new QAction(str, pobj);
connect(pact, SIGNAL(triggered()),
this, SLOT(slotStringOperation())
);
m_pmnuPlugins->addAction(pact);
}
}
}
// ----------------------------------------------------------------------
void PluginsWindow::slotStringOperation()
{
QAction* pact = qobject_cast<QAction*>(sender());
PluginInterface* pI = qobject_cast<PluginInterface*>(pact->parent());
pI->operation();
}
Ну и соответственно в самом плагине
C++ (Qt)
void KinopoiskPlugin::operation()
{
QString movieName = QInputDialog::getText(0,tr("Enter movie"),tr("Enter movie name:"));
if(!movieName.isEmpty())
searchMovie(movieName);
}
в самом конце функции
searchMovie(movieName) идет GET запрос и в
finished(QNetworkReply*) парсится в конечный вариант
QString descriptionC++ (Qt)
void KinopoiskPlugin::replyFinished(QNetworkReply* reply){
int statusCode= reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
int status = currentStatus;
switch(status){
case Movie:{
switch(statusCode){
case 200:{
QString tmp=reply->readAll();
description = parseMovie(tmp);
QMessageBox::information(0,"",description); // Вот тут мне надо вернуть данные в основное приложение
}
break;
}
}
break;
}
}
PS Может плохо обьяснил т.к. не знаю как правильно выразиться... если по простому - мне надо конечное
description вернуть в основное приложение в
QPlainTextEdit ^_^