代码拉取完成,页面将自动刷新
#include "MainView.h"
#include <stdexcept>
#include <QQmlComponent>
#include <QQmlContext>
#include <QtConcurrent/QtConcurrent>
#include <QDebug>
using namespace std;
static const QString g_strUrl = "qrc:/qml/MainWin.qml";
CMainView::CMainView(QObject *parent) : QObject(parent)
{
m_engine.rootContext()->setContextProperty("mainView", this);
m_pImageProvider = new CImageProvider();
m_engine.addImageProvider("uml_image", m_pImageProvider);
const QUrl url(g_strUrl);
QQmlComponent compentCreate(&m_engine, url);
m_pMainWin.reset((QQuickWindow*)compentCreate.create(), [](QQuickWindow* pWin) {
pWin->deleteLater();
});
if (nullptr == m_pMainWin)
{
auto errors = compentCreate.errors();
QString strErr = "CUserMgrWndView componentGuide.create failed";
for(auto err : errors)
{
strErr += err.toString() + ";";
}
qDebug() << strErr << endl;
throw std::runtime_error(strErr.toStdString());
}
}
CMainView::~CMainView()
{
}
void CMainView::show()
{
m_pMainWin->show();
}
void CMainView::analyze()
{
QtConcurrent::run([this](){
emit sigUpdateQml("busyWnd", true);
//此连接需要DirectConnection,需要在QtConcurrent线程中执行,从而不阻塞主线程刷新界面
emit sigAnalyze();
emit sigUpdateQml("busyWnd", false);
});
}
void CMainView::updateUmlImage(const QImage& img)
{
m_pImageProvider->updateImage(img);
emit sigUpdateQml("updateImage", QVariant());
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。