Я пробовал «плагин эха» из примеров qt, и я кое-что изменил, чтобы попробовать, и наткнулся на ошибку, которую не могу исправить. Вот исходный класс Echo Window
#include <QWidget>
#include "echointerface.h"
QT_BEGIN_NAMESPACE
class QString;
class QLineEdit;
class QLabel;
class QPushButton;
class QGridLayout;
QT_END_NAMESPACE
//! [0]
class EchoWindow : public QWidget
{
Q_OBJECT
public:
EchoWindow();
private slots:
void sendEcho();
private:
void createGUI();
bool loadPlugin();
EchoInterface *echoInterface; ***********
QLineEdit *lineEdit;
QLabel *label;
QPushButton *button;
QGridLayout *layout;
};
, который я изменил, это линия, которую я выделил звездами. я изменил его в Qlist, как это
QList<EchoInterface *>echoInterfaces
также изменил реализацию функции LoadPlugin () От этого: -
bool EchoWindow::loadPlugin()
{
QDir pluginsDir(qApp->applicationDirPath());
pluginsDir.cd("plugins");
foreach (QString fileName, pluginsDir.entryList(QDir::Files)) {
QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName));
QObject *plugin = pluginLoader.instance();
if (plugin) {
echoInterface = qobject_cast<EchoInterface *>(plugin);
if (echoInterface)
return true;
}
}
return false;
}
На это: -
bool ModifyWindow::loadPlugin()
{
QDir pluginsDir(qApp->applicationDirPath());
pluginsDir.cd("plugins");
foreach (QString fileName, pluginsDir.entryList(QDir::Files)) {
QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName));
QObject *plugin = pluginLoader.instance();
if (plugin) {
foreach ( EchoInterface *a, echoInterfaces)
{
a = qobject_cast <EchoInterface *>(plugin);
}
if(!echoInterfaces.contains(NULL))
return true;
}
}
return false;
}
и заранее спасибо