57 lines
1.3 KiB
C++
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;
|
|
}
|
|
|