Qt之一步一步实现插件调用
来源:互联网 发布:可以在芜湖学java吗 编辑:程序博客网 时间:2024/05/19 15:39
最近手里几个项目都采用插件的方式进行开发工作,这里记录一下实现方法,给需要的同学一个参考,
在linux系统和window系统都能成功编译通过,不废话直接步骤
第一步:建立插件原型
新建一个Qt项目,实现一个一个实时刷新当前时间这这么一个功能,工程命名为testdemo
如图
效果图
代码
mainwidget::mainwidget(QWidget *parent) : QWidget(parent), ui(new Ui::mainwidget){ ui->setupUi(this); QTimer *timer = new QTimer(this); //新建定时器 connect(timer,SIGNAL(timeout()),this,SLOT(timerUpDate())); //关联定时器计满信号和相应的槽函数 timer->start(1000);}void mainwidget::timerUpDate(){ QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间 QString str = time.toString("yyyy-MM-dd hh:mm:ss ddd"); //设置显示格式 QString strr= strr.fromLocal8Bit("当前时间:")+str;//调用中文显示 ui->label->setText(strr);}
第二步:生成插件文件
window下一般是dll后缀,linux下一般是so后缀
这里需要细说下直接上操作图片
1)这里选择Other Project 里面Qt Custom Designer Widget, 工程命名为testplugin
2)把第一步插件模型的文件附加到这个生成插件的工程中
3)找到testpluginPlugin.cpp文件下修改
QWidget*testpluginPlugin::createWidget(QWidget*parent){//returnnewtestplugin(parent);//原来代码returnnewmainwidget(parent);//修改后代码}
效果图
在生成目录下就能找到生成的插件testpluginplugin.dll。
第三步 主程序调用插件
同样的新建一个主程序工程,命名为testmain
效果图
代码
//加载插件函数QWidget *loadPlugins(QString pluginFileName, QWidget *parent){ QPluginLoader loader( pluginFileName ); bool b = loader.load(); if(b) qDebug("loder ok!\r\n"); else qDebug("loder error!\r\n"); QObject *plugin = loader.instance(); if (plugin) { QDesignerCustomWidgetInterface *iCustomWidgetInterface = qobject_cast<QDesignerCustomWidgetInterface *>(plugin); if( iCustomWidgetInterface ){ QWidget *widget = iCustomWidgetInterface->createWidget( parent ); return widget; } } else qDebug("loader.instance() error\r\n"); return NULL;}//初始化插件void MainWindow::loadplugin(){ QString DirPath=QApplication::applicationDirPath(); DirPath=DirPath.left(DirPath.lastIndexOf("/")); QString pluginfilename; pluginfilename = DirPath+"/testpluginplugin.dll"; testwidget = loadPlugins( pluginfilename, this );}
源码链接:http://download.csdn.net/download/caoshangpa/10114302
原文链接:http://www.cnblogs.com/newstart/p/3456918.html
阅读全文
1 0
- Qt之一步一步实现插件调用
- Qt一步一步实现插件调用(附源码)、Qt一步一步实现插件通信(附源码)
- Qt一步一步实现插件调用(附源码)
- Qt一步一步实现插件通信(附源码)
- Qt 一步一步实现dll调用(附源码)
- QT 插件调用
- Qt调用插件
- QT实现浏览器插件 调用及回调 (一)
- QT实现浏览器插件 调用及回调 (二)
- QT实现浏览器插件 调用及回调 (三)
- 一步一步实现JS拖拽插件
- Qt 调用动态库 插件
- qt之 调用摄像头
- Onvif用户验证之gSOAP插件wsseapi调用实现
- Struts2之struts2自带插件实现异步调用
- 【大话QT之四】ctkPlugin插件系统实现项目插件式开发
- 【大话QT之四】ctkPlugin插件系统实现项目插件式开发
- C++ Qt 调用动态库 插件
- RecyclerView的万能分割线
- NOIP2017 游记
- 按键处理技巧(状态机)
- 还差9个
- [自用门户]让ul里面的li整体居中
- Qt之一步一步实现插件调用
- Magento获取product image
- android插件化框架-VirtualApk
- html 文字两边加横线\竖线
- 腾讯TBS服务的应用
- 最大流最小割算法入门理解
- ABBYY FineReader去他的光棍节,我要我的双十一
- Go基础编程:复合类型—指针
- LeetCode解题-#4-Median of Two Sorted Arrays