#include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include #include #include #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(plugin); if (treeInterface) { //加载插件后生成Tree qDebug()<information(); } this->setWindowTitle("ss"); } MainWindow::~MainWindow() { delete ui; }