#include "widget.h"
#include "ui_widget.h"
#include <QtWidgets>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
if(!loadPlugin()){
QMessageBox::warning(this, "Error", "Could not load the plugin");
}
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
int a = ui->lineEdit_a->text().toInt();
int b = ui->lineEdit_b->text().toInt();
int r = -1;
if(m_pInterface)
r = m_pInterface->add(a,b);
ui->lineEdit_r->setText(QString::number(r));
}
bool Widget::loadPlugin()
{
QDir pluginsDir(qApp->applicationDirPath());
#if defined(Q_OS_WIN)
if (pluginsDir.dirName().toLower() == "debug" || pluginsDir.dirName().toLower() == "release")
pluginsDir.cdUp();
#elif defined(Q_OS_MAC)
if (pluginsDir.dirName() == "MacOS") {
pluginsDir.cdUp();
pluginsDir.cdUp();
pluginsDir.cdUp();
}
#endif
pluginsDir.cd("plugins");
foreach (QString fileName, pluginsDir.entryList(QDir::Files)) {
QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName));
QObject *plugin = pluginLoader.instance();
qDebug() << "--->>>Lynn<<<---" << __FUNCTION__ << pluginLoader.errorString();
if (plugin) {
m_pInterface = qobject_cast<CalInterface *>(plugin);
if (m_pInterface)
return true;
}
}
return false;
}
评论3
最新资源