485_ana/mainwindow.cpp

57 lines
1.3 KiB
C++

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPluginLoader>
#include <QDir>
#include <iostream>
#include <QDebug>
#include <QtPlugin>
#if defined(_MSC_VER) && (_MSC_VER >= 1600)
# pragma execution_character_set("utf-8")
#endif
class MainInterface
{
public:
virtual ~MainInterface(){}
virtual QString name() = 0;
virtual QString information() = 0;
};
#define MainInterface_iid "com.Interface.MainInterface"
Q_DECLARE_INTERFACE(MainInterface, MainInterface_iid)
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QDir pluginsDir = QDir(qApp->applicationDirPath());
if (!pluginsDir.cd("Plugins")) return;
QStringList filters;
filters << "*.dll"; //可以多种格式或者单个格式
pluginsDir.setFilter(QDir::Files | QDir::NoSymLinks); //设置类型过滤器,只为文件格式
pluginsDir.setNameFilters(filters); //设置文件名称过滤器
QStringList ap;
QPluginLoader pluginLoader("d://untitled.dll");
QObject* plugin = pluginLoader.instance();
auto treeInterface = qobject_cast<MainInterface*>(plugin);
if (treeInterface) {
//加载插件后生成Tree
qDebug()<<treeInterface->information();
}
this->setWindowTitle("ss");
}
MainWindow::~MainWindow()
{
delete ui;
}