Qt 界面程序 动态调用 界面类dll展示
时间: 2024-01-13 16:04:16 浏览: 111
首先,需要创建一个Qt项目,包含两个工程:主工程和界面类dll工程。
界面类dll工程需要将界面类的头文件和源文件添加进去,并将其编译成dll文件。
在主工程中,需要使用QLibrary类来动态加载界面类dll,并调用其中的函数。
示例代码如下:
// 加载界面类dll
QLibrary lib("mydialog.dll");
// 判断是否加载成功
if (lib.load()) {
// 获取界面类的构造函数
typedef MyDialog* (*CreateFunc)();
CreateFunc createFunc = (CreateFunc)lib.resolve("create");
// 判断是否获取成功
if (createFunc) {
// 创建界面类对象
MyDialog* dlg = createFunc();
// 显示界面
dlg->exec();
// 删除界面类对象
delete dlg;
}
// 卸载dll
lib.unload();
}
其中,MyDialog为界面类的类名,create为界面类的构造函数名,需要在界面类dll中导出此函数。
示例代码如下:
class MyDialog : public QDialog {
Q_OBJECT
public:
MyDialog(QWidget* parent = nullptr) : QDialog(parent) {}
~MyDialog() {}
public slots:
void onOkButtonClicked() {
accept();
}
void onCancelButtonClicked() {
reject();
}
};
// 导出构造函数
extern "C" MYDIALOG_EXPORT MyDialog* create() {
return new MyDialog();
}
其中,MYDIALOG_EXPORT为dll导出宏定义,需要在界面类头文件中定义。
阅读全文