拒绝废话!
基于Qt6.6.0 首先,新建个qt quick project
1.Qt creator新建c++头文件
#ifndef MYTEST_H_H
#define MYTEST_H_H
#include<QObject>
#include<QDebug>
namespace myNamespace { //不是必须
class Test:public QObject{ //仅需改动类名,其他不要动
Q_OBJECT //不要动,是private
public slots: //不要动,槽
void doSomething(){ //自定义个成员函数用于执行所需操作,被下面signals信号函数调用。
qDebug()<<"okllllllllllllllllllll\n"; //控制台输出
}
signals: //不要动,信号
void begin(); //自定义个信号名称。
};
}
#endif // MYTEST_H_H
2.在main.cpp中注册自定义类
#include "mytest_h.h"
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
//注册c++自定义Test类,其中“customlize”是下一步Main.qml文件中需要导入的文件名,随便起。
//整个main.cpp文件只要加入下面这句,其他内容不要动。
qmlRegisterType<myNamespace::Test>("customlize",1,0,"Test");
QQmlApplicationEngine engine;
const QUrl url(u"qrc:/untitled4/Main.qml"_qs);
QObject::connect(
&engine,
&QQmlApplicationEngine::objectCreationFailed,
&app,
[]() { QCoreApplication::exit(-1); },
Qt::QueuedConnection);
engine.load(url);
return app.exec();
}
3.Main.qml调用c++代码执行
import QtQuick
import QtQuick.Window
import QtQuick.Controls 2.5
import customlize 1.0
ApplicationWindow {
id: mainWindow
width: 640
height: 480
visible: true
title: qsTr("是否支持中文")
// 设置窗口的样式,无边框
// flags: Qt.Window | Qt.FramelessWindowHint
Button{
id: basicButton
text: qsTr("最基本的按钮")
MouseArea {
anchors.fill: parent
onClicked: {
hello.begin(); //begin成员函数是c++自定义的signal函数
}
}
Test{
id:hello
onBegin:doSomething(); //doSomething成员函数是c++自定义的slots函数,onBegin就是on+c++自定义的signal函数的begin函数名,注意begin首字母必须大写。
}
}
}
调试发现:控制台输出相关字符串。。。。