目录
1.服务器托管创建接口
2.创建插件
3.创建插件界面
4.插件实现
5.创建应用工程
6.应用插件
1.创建接口
打开QtCreater,点击左上角“文件”->新建文件或项目,在弹窗中选择C++/C++Header File。
输入文件名,选好路径(可自行设置名称,路径)。后面点击下一步,完成就可以了。
在创建的文件中输入以下内容
classMyPlugin:publicQObject
{
Q_OBJECT
public:
virtual~MyPlugin(){}
virtualvoidmsgToPlugin(int)=0;//插件接收消息
signals:
voidmsgFromPlugin(int);//插件发送消息
public:
QWidget*widget;//插件界面接口指针
};
#defineMyPlugin_IID"com.wyc.myplugin"
Q_DECLARE_INTERFACE(MyPlugin,MyPlugin_IID);//将接口告诉Qt元对象系统
2.创建插件
再次点击“文件”->新建文件或项目,选择Library/C++ Library,
输入名称和路径,其他没展示的,都选择默认,点下一步就可以了
添加上面生成的插件接口头文件
修改pro前几行
QT+=coregui
greaterThan(QT_MAJOR_VERSION,4):QT+=widgets
TEMPLATE=lib
DEFINES+=TEST_PLUGIN_UI_LIBRARY
CONFIG+=plugin
CONFIG+=c++11
3.创建插件界面
在test_plugin_ui项目上点击右键,选择Add new…,服务器托管选择设计师界面类,输入名称。
界面中添加控件,用来测试和主界面的通讯。
头文件加入如下内容:
signals:
voidsendMsg(int);//发送消息
publicslots:
voidrecMsg(int);//接收消息
privateslots:
voidon_send_clicked();
在cpp文件中实现相应的收发功能。
至此插件界面就做好了。
4.插件实现
在之前创建的test_plugin_ui.h中加入头文件:
#include"myplugin.h"
#include"pluginwidget.h"
在类中加入如下内容:
classTEST_PLUGIN_UI_EXPORTTest_plugin_ui:publicMyPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID"com.wyc.myplugin")
Q_INTERFACES(MyPlugin)
public:
Test_plugin_ui();
~Test_plugin_ui();
voidmsgToPlugin(int);//接收消息
private:
PluginWidget*m_pluginWidget=0;
};
在cpp中初始化m_pluginWidget,并将其赋值给widget,外部界面可以通过widget指针使用插件里的界面.
m_pluginWidget=newPluginWidget;
widget=m_pluginWidget;
QObject::connect(m_pluginWidget,&PluginWidget::sendMsg,this,&Test_plugin_ui::msgFromPlugin);
实现函数voidmsgToPlugin(int)后,点击编译图标,即可生成.dll,.a文件
5.创建应用工程
创建应用工程
编译器一定要选跟上面一样的,其他都点“下一步”。
在ui文件中添加控件如下
右侧的布局用来添加插件界面。
6.应用插件
将上面生成的.dll和.a两个文件拷贝到相应的目录,比如Debug,就拷贝到build-…-Debug下,Release就拷贝到build-…-Release下。
将接口文件myplugin.h添加到工程中。
在头文件mainwindow.h中添加如下内容:
#include"myplugin.h"
publicslots:
voidrectMsg(intvalue);
privateslots:
voidon_sendBtn_clicked();
private:
MyPlugin*m_plugin;
在mainwindow.cpp构造函数中添加如下内容:
if(!QLibrary::isLibrary(("test_plugin_ui.dll"))){
qDebug()(loader.instance());
if(m_plugin){
ui->verticalLayout->addWidget(m_plugin->widget);
connect(m_plugin,&MyPlugin::msgFromPlugin,this,&MainWindow::rectMsg);
}else{
qDebug()
并在cpp文件中实现相应的收发功能,运行即可。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
图 1.图的基本概念 2. 图的存储结构 2.1邻接矩阵 2.2邻接表 2.3两种实现的比较 3.图的遍历 3.1 图的广度优先遍历 3.2 图的深度优先遍历 4.最小生成树 4.1 Kruskal算法 4.2 Prim算法 4.3 两个算法比较 5.最短路径…