Size: a a a

2020 March 26

B

Bjørn in Qt
В одном из методов плюсов делаю emit, при связывание с этим сигналом в плюсах отрабатывает норм
источник

AS

Anatoly Shirokov in Qt
Bjørn
    Connections {
       target: core
       onParseDone:{
               console.log("Test")
   }
}
Класс зарегистрирован?
источник

B

Bjørn in Qt
qmlRegisterType?
источник

AS

Anatoly Shirokov in Qt
Bjørn
qmlRegisterType?
да
источник

PM

Peter Mironychev in Qt
там необязательно регистрировать, если ты просто коннектишься к указателю
источник

PM

Peter Mironychev in Qt
ну тут к ссылке, проблема в другом месте
источник

B

Bjørn in Qt
Был, но это не спасало ситуацию
источник

PM

Peter Mironychev in Qt
ты в контекст переменную добавляешь до или после поднятия вью?
источник

B

Bjørn in Qt
Этот вью?

QQuickView view
источник

PM

Peter Mironychev in Qt
да
источник

B

Bjørn in Qt
Я не создаю вью
источник

PM

Peter Mironychev in Qt
эм
источник

PM

Peter Mironychev in Qt
а в чем тогда крутится  qml?
источник

B

Bjørn in Qt
engine.load(url);
источник

B

Bjørn in Qt
Где url = qrc:/main.qml
источник

PM

Peter Mironychev in Qt
ну ок
источник

PM

Peter Mironychev in Qt
так ты в контекст кидаешь до или после load
источник

B

Bjørn in Qt
До
источник

AS

Anatoly Shirokov in Qt
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>

class Some : public QObject
{
   Q_OBJECT
public:
   Some(QObject *parent = nullptr)
       : QObject{parent}
   {}
signals:
   void done(QString msg);

public slots:
   Q_INVOKABLE void process() {
       emit done("finished");
   }
};

int main(int argc, char *argv[])
{
   QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

   QGuiApplication app(argc, argv);

   QQmlApplicationEngine engine;
   qmlRegisterType<Some>();
   Some some;
   QQmlContext* context = engine.rootContext();
   context->setContextProperty("some", &some);
   const QUrl url(QStringLiteral("qrc:/main.qml"));
   QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
       &app, [url](QObject *obj, const QUrl &objUrl) {
           if (!obj && url == objUrl)
               QCoreApplication::exit(-1);
       }, Qt::QueuedConnection);
   engine.load(url);

   return app.exec();
}

#include "main.moc"

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12

Window {
   visible: true
   width: 640
   height: 480
   title: qsTr("Hello World")

   Button {
       text: "click"
       onClicked: {
           some.process()
       }
   }

   Connections {
       target: some
       onDone: {
           console.log(msg)
       }
   }
}
источник

AS

Anatoly Shirokov in Qt
все работает
источник