Всем доброго времени суток! Проблема с передачей сигналов в QML. Читал темы, вроде бы сделал все, как положено. Но начинают лезть ошибки при подключении библиотек, необходимых для работы qmlRegisterType. Код программы представлен ниже.
MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QApplication>
#include <QtDeclarative/QDeclarativeView>
#include <QtCore/QUrl>
#include <QDeclarativeContext>
#include "qml_class.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
qml_class *interface;
private slots:
void on_pushButton_clicked();
void inslaider(int);
private:
Ui::MainWindow *ui;
QDeclarativeView *ua;
signals:
void slmove(int);
};
#endif // MAINWINDOW_H
qml_class.h
#ifndef QML_CLASS_H
#define QML_CLASS_H
#include <QObject>
class qml_class : public QObject
{
Q_OBJECT
public:
qml_class(QObject *parent = 0);
signals:
void newSignal();
public slots:
void newSlot();
};
#endif // QML_CLASS_H
main.cpp
#include "mainwindow.h"
#include "qml_class.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow w;
w.show();
return app.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QHBoxLayout>
#include <QProcess>
[color="#FF0000"]#include <QtQml/QQmlEngine>
#include <QtQuick/QQuickPaintedItem>[/color]
#include "qml_class.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
//установка рисунка QML на слой виджета в интерфейсе
ui->setupUi(this);
ua = new QDeclarativeView;
ua->setSource(QUrl("qrc:/main.qml"));
ua->setResizeMode(QDeclarativeView::SizeRootObjectToView);
qmlRegisterType<qml_class>("Interface",1,0,"Interface");
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(ua);
ui->widget->setLayout(layout);
connect(ui->verticalSlider,SIGNAL(valueChanged(int)),this,SLOT(inslaider(int)));
}
MainWindow::~MainWindow()
{
delete ui;
delete ua;
}
void MainWindow::on_pushButton_clicked()
{
close();
}
void MainWindow::inslaider(int gg)
{
if (gg>0)
{
emit slmove(gg);
}
}
qml_class.cpp
#include "qml_class.h"
qml_class::qml_class(QObject *parent) :
QObject(parent)
{
}
void qml_class::newSlot()
{
emit newSignal();
}
main.qml
import QtQuick 1.1
import Interface 1.0
// расшифровка названий
Item {
width: 800
height: 800
//описание центральной части(окружность)
Rectangle{
color: "darkgreen"
x:120
y:120
width: 200
height: 200
radius: 100
//opacity: 0
}
// Описание верхнего вертикального плавника
Rectangle{
id:rect_rverh
color: "red"
x: 224
y: 20
width: 1
height: 100
}
Rectangle{
id: rect_lverh
color: "red"
x: 217
y: 20
width: 1
height: 100
}
Rectangle{
color: "#3b7e44"
anchors.top: rect_rverh.top
anchors.right: rect_rverh.left
anchors.left: rect_lverh.right
height: 100
}
// Interface{
// onNewSignal:
// }
// Описание правого горизонтального плавника
Rectangle{
id: rect_rhzv
objectName: "rvert"
color: "red"
x: 320
y: 217//-rv
width: 100
height: 1
}
Rectangle{
id: rect_rhzn
objectName: "rniz"
color: "red"
x: 320
y: 224//+rn
width: 100
height: 1
}
Rectangle{
color: "#3b7e44"
anchors.top: rect_rhzv.bottom
anchors.bottom: rect_rhzn.top
anchors.left: rect_rhzv.left
width: 100
}
// Описание левого горизонтального плавника
Rectangle{
id: rect_lhzv
objectName: "lverh"
color: "red"
x: 20
y: 217//-rv
width: 100
height: 1
}
Rectangle{
id: rect_lhzn
objectName: "lniz"
color: "red"
x: 20
y: 224//+rn
width: 100
height: 1
}
Rectangle{
color: "#3b7e44"
anchors.top: rect_lhzv.bottom
anchors.bottom: rect_lhzn.top
anchors.left: rect_lhzv.left
width: 100
}
// Описание нижнего вертикального плавника
Rectangle{
id:rect_rniz
color: "red"
x: 224
y: 320
width: 1
height: 100
}
Rectangle{
id: rect_lniz
color: "red"
x: 217
y: 320
width: 1
height: 100
}
Rectangle{
color: "#3b7e44"
anchors.top: rect_rniz.top
anchors.right: rect_rniz.left
anchors.left: rect_lniz.right
height: 100
}
Что может быть не так? Заранее спасибо за ответы!)
PS: в программе требуется по сигналу слайдера изменять размер прямоугольников в QML.
Вот, кстати, оповещение об ошибке C:\My_projects\project_test\mainwindow.cpp:-1: ошибка: undefined reference to `_imp___ZN11QQmlPrivate30qdeclarativeelement_destructorEP7QObject'