Qml定义信号
![](https://i-blog.csdnimg.cn/blog_migrate/1a7cc6b594b278cf906f3d11bcca54ac.png)
Qml关联信号
![](https://i-blog.csdnimg.cn/blog_migrate/ef160a0872bcab6912360adbaa1758c8.png)
Qml的槽函数就是在信号前加小写的on,然后将信号名复制过来,再将信号名第一字母改为大写即可。例如原信号名为colorPicked(color clr) ,那么它的槽函数就为onColorPicked{ .... }
C++信号与槽的定义
![](https://i-blog.csdnimg.cn/blog_migrate/1f0603e7bfb10c7ec95dc8c8254db3af.png)
信号需放在signals: 标签下面.槽需要放在slots:标签下面.另外槽函数相当与静态函数,是可以在外部直接当作普通的静态函数直接调用的哟。
让C++类可以在QML中被调用
1.首先定义好一个普通类
#include <QQuickWindow>
class FramelessWindow : public QQuickWindow
{
Q_OBJECT
public:
explicit FramelessWindow(QWindow *parent = 0);
~FramelessWindow();
Q_INVOKABLE void setTitleBar(QQuickItem *titleBar);
signals:
public slots:
// QWidget interface
protected:
bool nativeEvent(const QByteArray &eventType, void *message, long *result);
private:
QQuickItem *m_pTitleBar;
};
2.在C++中使用 qmlRegisterType 注册定义好的类
![](https://i-blog.csdnimg.cn/blog_migrate/2a45687e5215ced3eb7a0b5312867be9.png)
qmlRegisterType
在参数:
qmlRegisterType