1、在window编译ctk 源码 需要安装 cmake工具
2、ctk 源代码在官网上下载,源码文件如下图不包含build 开头文件夹
3、ctk 源码在window编译时报错需要添加
CTK_QT_VERSION (to 5)
CMAKE_PREFIX_PATH (with the path to the cmake folder in Qt)
参照链接
https://blog.csdn.net/weixin_42326802/article/details/88075572?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
或
https://blog.csdn.net/houqd2012/article/details/37937755
或
https://www.twblogs.net/a/5b8cf3ea2b7177188337557f
4、ctk编译完成后,开发自己的代码需要注意
在pro文件中加入下图 指定的
TEMPLATE = app
TARGET = simplebrowser
QT += webenginewidgets
HEADERS += \
browser.h \
browserwindow.h \
dialogplugin.h \
downloadmanagerwidget.h \
downloadwidget.h \
eventlistener.h \
mainwindow.h \
pluginservice.h \
tabwidget.h \
webpage.h \
webpopupwindow.h \
webview.h
SOURCES += \
browser.cpp \
browserwindow.cpp \
dialogplugin.cpp \
downloadmanagerwidget.cpp \
downloadwidget.cpp \
eventlistener.cpp \
main.cpp \
mainwindow.cpp \
tabwidget.cpp \
webpage.cpp \
webpopupwindow.cpp \
webview.cpp
FORMS += \
certificateerrordialog.ui \
dialogplugin.ui \
mainwindow.ui \
passworddialog.ui \
downloadmanagerwidget.ui \
downloadwidget.ui
RESOURCES += data/simplebrowser.qrc
# install
target.path = $$[QT_INSTALL_EXAMPLES]/webenginewidgets/simplebrowser
INSTALLS += target
LIBS += E:\CTK-20200304\build-64-1\CTK-build\bin\Debug\CTKCore.lib
LIBS += E:\CTK-20200304\build-64-1\CTK-build\bin\Debug\CTKPluginFramework.lib
INCLUDEPATH += E:\CTK-20200304\Libs\PluginFramework
斜体样式
5、启动插件代码
//QString path ="/home/grj/Desktop/Qt_HTYBrowser-master/plugins";
QString path = QApplication::applicationDirPath() + "/plugins";
qDebug() << "path:" << path << "\r\n";
ctkPluginFrameworkLauncher::addSearchPath(path);
//set and start CTK Plugin System
ctkPluginFrameworkLauncher::start("org.commontk.eventadmin");
//get plugin context
context = ctkPluginFrameworkLauncher::getPluginContext();
// event listener
EventListener listener;
context->connectFrameworkListener(&listener, SLOT(onFrameworkEvent(ctkPluginFrameworkEvent)));
context->connectPluginListener(&listener, SLOT(onPluginEvent(ctkPluginEvent)));
context->connectServiceListener(&listener, "onServiceEvent"); //, filter);
qDebug() << "EventListener:" << "\r\n";
try {
qDebug() << "try start :" << "\r\n";
QSharedPointer<ctkPlugin> plugin = context->installPlugin(QUrl::fromLocalFile(fileInfo->at(row).absoluteFilePath()));
// 获取清单头和值
QHash<QString, QString> headers = plugin->getHeaders();
qDebug() << "Headers:" << headers << "\r\n";
// 获取符号名
QString symb = plugin->getSymbolicName();
qDebug() << "Symbolic Name:" << symb << "\r\n";
plugin->start(ctkPlugin::START_TRANSIENT);
qDebug() << "Plugin start ...";
ctkServiceReference reference = context->getServiceReference<PluginService>();
if (reference) {
PluginService* service = qobject_cast<PluginService *>(context->getService(reference));
if(service != Q_NULLPTR) {
service->doSomeThing();
QWidget* w = service->getWidget();
ui->tabWidget->addTab(w,QIcon(":/bookmark_on.png"),"plugin");
//ui->tabWidget->setCurrentIndex(ui->tabWidget->count()-1);
}
}
} catch(const ctkPluginException &e) {
qDebug() << "Failed to install plugin" << e.what();
return;
}
6、具体程序逻辑 根据自己需要来写
7、源码 下载 地址
https://github.com/knowledge0603/ctk-source
或git上检索 ctk 下载最新官网代码
ctk 例子下载地址
https://github.com/knowledge0603/ctk-demo-plugin-qt
ctk plugin 结合 浏览器 开发 例子
https://github.com/knowledge0603/browser