返利网站怎么做,用自己的电脑做网站划算,网页设计购物网站模板,北京 网站建设目录
1.创建接口
2.创建插件
3.创建插件界面
4.插件实现
5.创建应用工程
6.应用插件 1.创建接口
打开QtCreater#xff0c;点击左上角“文件”-新建文件或项目#xff0c;在弹窗中选择C/CHeader File。 输入文件名#xff0c;选好路径#xff08;可自行设置名称…目录
1.创建接口
2.创建插件
3.创建插件界面
4.插件实现
5.创建应用工程
6.应用插件 1.创建接口
打开QtCreater点击左上角“文件”-新建文件或项目在弹窗中选择C/CHeader File。 输入文件名选好路径可自行设置名称路径。后面点击下一步完成就可以了。 在创建的文件中输入以下内容
class MyPlugin : public QObject
{Q_OBJECT
public:virtual ~MyPlugin(){}virtual void msgToPlugin(int) 0; //插件接收消息
signals:void msgFromPlugin(int);//插件发送消息
public:QWidget* widget; //插件界面接口指针
};
#define MyPlugin_IID com.wyc.myplugin
Q_DECLARE_INTERFACE(MyPlugin, MyPlugin_IID);//将接口告诉Qt元对象系统
2.创建插件
再次点击“文件”-新建文件或项目选择Library/C Library 输入名称和路径其他没展示的都选择默认点下一步就可以了 添加上面生成的插件接口头文件 修改pro前几行
QT core gui
greaterThan(QT_MAJOR_VERSION, 4): QT widgetsTEMPLATE lib
DEFINES TEST_PLUGIN_UI_LIBRARY
CONFIG plugin
CONFIG c11
3.创建插件界面
在test_plugin_ui项目上点击右键选择Add new...选择设计师界面类输入名称。 界面中添加控件用来测试和主界面的通讯。 头文件加入如下内容
signals:void sendMsg(int);//发送消息
public slots:void recMsg(int); //接收消息
private slots:void on_send_clicked();
在cpp文件中实现相应的收发功能。
至此插件界面就做好了。
4.插件实现
在之前创建的test_plugin_ui.h中加入头文件
#include myplugin.h
#include pluginwidget.h
在类中加入如下内容:
class TEST_PLUGIN_UI_EXPORT Test_plugin_ui : public MyPlugin
{Q_OBJECTQ_PLUGIN_METADATA(IID com.wyc.myplugin)Q_INTERFACES(MyPlugin)
public:Test_plugin_ui();~Test_plugin_ui();void msgToPlugin(int); //接收消息
private:PluginWidget * m_pluginWidget 0;
};
在cpp中初始化m_pluginWidget并将其赋值给widget外部界面可以通过widget指针使用插件里的界面.
m_pluginWidget new PluginWidget;
widget m_pluginWidget;
QObject::connect(m_pluginWidget, PluginWidget::sendMsg, this, Test_plugin_ui::msgFromPlugin);
实现函数void msgToPlugin(int)后点击编译图标即可生成.dll.a文件 5.创建应用工程
创建应用工程 编译器一定要选跟上面一样的其他都点“下一步”。 在ui文件中添加控件如下 右侧的布局用来添加插件界面。
6.应用插件
将上面生成的.dll和.a两个文件拷贝到相应的目录比如Debug,就拷贝到build-...-Debug下Release就拷贝到build-...-Release下。
将接口文件myplugin.h添加到工程中。 在头文件mainwindow.h中添加如下内容
#include myplugin.h
public slots:void rectMsg(int value);
private slots:void on_sendBtn_clicked();
private:MyPlugin *m_plugin;
在mainwindow.cpp构造函数中添加如下内容 if(!QLibrary::isLibrary((test_plugin_ui.dll))){qDebug()not a library;return;}QDir dir(./test_plugin_ui.dll);qDebug()__LINE__ dir.absolutePath();QPluginLoader loader(dir.absolutePath());loader.load();qDebug() loader.errorString();m_plugin qobject_castMyPlugin*(loader.instance());if(m_plugin){ui-verticalLayout-addWidget(m_plugin-widget);connect(m_plugin, MyPlugin::msgFromPlugin, this, MainWindow::rectMsg);}else{qDebug()__LINE__ error;}
并在cpp文件中实现相应的收发功能运行即可。