полезное место:
http://qml.ucoz.com/publ/stati_po_qml/integracija_qml_i_c/5-1-0-14
1. В файле проекта для совместной работы необходимо добавить
так как QDeclarativeView является потомком QWidget, можно там же задать и другие сфойства, например размеры окна
полезно задать
4. теперь из qml мы можем вызвать слот
класс:
http://qml.ucoz.com/publ/stati_po_qml/integracija_qml_i_c/5-1-0-14
1. В файле проекта для совместной работы необходимо добавить
QT+=declarative2. Создаем класс и наследуем его от QDeclarativeView В конструкторе: при помощи метода setSource задаем корневой qml-файл
setSource(QUrl("qrc:/TextEditor.qml"));Получаем контекст из qml и устанавливаем для него свойство, которое будет видно из qml
QDeclarativeContext *context = rootContext(); context->setContextProperty("window",this);
так как QDeclarativeView является потомком QWidget, можно там же задать и другие сфойства, например размеры окна
полезно задать
setResizeMode(QDeclarativeView::SizeRootObjectToView);3. Задаем слоты, которые будут доступны из qml
public slots: void alarm() { QMessageBox::information(0,"111","222"); }
4. теперь из qml мы можем вызвать слот
onButtonClicked: { screen.imageFile = window.alarm() }
класс:
class QmlViewer : public QDeclarativeView{ Q_OBJECT public: QmlViewer(QDeclarativeView *prnt=0) :QDeclarativeView(prnt) { setSource(QUrl("qrc:/TextEditor.qml")); QDeclarativeContext *context = rootContext(); context->setContextProperty("window",this); setResizeMode(QDeclarativeView::SizeRootObjectToView); setMinimumSize(500,400); } public slots: void alarm() { QMessageBox::information(0,"111","222"); } QString getFileName() { return QFileDialog::getOpenFileName(0,QObject::tr("Открыть файд"),"","*.jpg"); } };