полезное место:
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 и устанавливаем для него свойство, которое будет видно из qmlQDeclarativeContext *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");
}
};