当前位置: 首页 > news >正文

仁怀网站建设江苏财经职业技术学院会计系示范校建设专题网站

仁怀网站建设,江苏财经职业技术学院会计系示范校建设专题网站,大型公司网站制作,和各大网站做视频的工作文章目录 一、C文件Demo二、使用步骤1. 初始化C文件和QML文件#xff0c;并建立信号槽2.在qml中调用 一、C文件Demo Q_INVOKABLE是一个Qt元对象系统中的宏#xff0c;用于将C函数暴露给QML引擎。具体来说#xff0c;它使得在QML代码中可以直接调用C类中被标记为Q_INVOKABLE的… 文章目录 一、C文件Demo二、使用步骤1. 初始化C文件和QML文件并建立信号槽2.在qml中调用 一、C文件Demo Q_INVOKABLE是一个Qt元对象系统中的宏用于将C函数暴露给QML引擎。具体来说它使得在QML代码中可以直接调用C类中被标记为Q_INVOKABLE的成员函数。 public:SerialPort();// 返回可用串口Q_INVOKABLE QStringList availablePorts();// 打开串口Q_INVOKABLE bool open(QString portName, QString buadRate, QString dataBits, QString stopBits,QString parity, QString flowControl);// 关闭串口Q_INVOKABLE void close();// 直接调用接口Q_INVOKABLE void say();signals://返回串口打开信息Q_INVOKABLE void openMsg(bool open, QString error);//接口用于多线程Q_INVOKABLE void sendMsg(QString msg);public slots://void sendMsgSlot(QString msg);private:QThread* m_thread;QSerialPort* m_port;QMutex m_mutex;m_port new QSerialPort(); connect(this, SerialPort::sendMsg, this, SerialPort::sendMsgSlot);tts new QTextToSpeech(this);m_thread new QThread; m_thread-setObjectName(串口线程); this-moveToThread(m_thread); connect(m_thread, QThread::finished, this, QThread::deleteLater); connect(m_thread, QThread::finished, this, SerialPort::deleteLater); m_thread-start();QStringList SerialPort::availablePorts() {QStringList list;foreach(auto info, QSerialPortInfo::availablePorts()) list.append(info.portName());listCOM11COM22;return list; }bool SerialPort::open(QString portName, QString buadRate, QString dataBits, QString stopBits,QString parity, QString flowControl) {bool ok false;QString errstr m_port异常;{QMutexLocker locker(m_mutex);if(!m_port){emit openMsg(false, errstr);locker.unlock();return false;}m_port-setPortName(portName);m_port-setBaudRate(buadRate.toInt());m_port-setDataBits((QSerialPort::DataBits)dataBits.toInt());m_port-setStopBits((QSerialPort::StopBits)stopBits.toInt());m_port-setParity((QSerialPort::Parity)parity.toInt());m_port-setFlowControl((QSerialPort::FlowControl)flowControl.toInt());ok m_port-open(QIODevice::ReadWrite);errstr m_port-errorString();}emit openMsg(ok, errstr);return ok; }void SerialPort::close() {QMutexLocker locker(m_mutex);if(m_port m_port-isOpen()) m_port-close(); }void SerialPort::say() {qDebug()SerialPort CurrrntThread QThread::currentThread();qDebug()---------------------------------------------------------;QString text 2,8,k,1,0;tts-say(text); }void SerialPort::sendMsgSlot(QString msg) {qDebug()SerialPort CurrrntThread QThread::currentThread();qDebug()msg;qDebug()---------------------------------------------------------; }二、使用步骤 1. 初始化C文件和QML文件并建立信号槽 qml中的槽函数也是定义成signal, 所以connect时槽函数也是SIGNAL() serial new SerialPort; //serial 类向 QML 对象的上下文公开数据 ui-quickWidget_2-rootContext()-setContextProperty(serial, serial); //根据窗口大小调整QML大小 ui-quickWidget_2-setResizeMode(QQuickWidget::SizeRootObjectToView); // ui-quickWidget_2-setSource(QUrl(qrc:/Form02.qml)); // QObject* obj ui-quickWidget_2-rootObject(); // 调用qml中信号或者槽函数调用成功返回true否则false // 根节点被调用信号或槽连接方式被调用信号或槽的参数1 被调用信号或槽的参数2(最多10个参数) if(QMetaObject::invokeMethod(obj, slotOpenSerial, Qt::DirectConnection, Q_ARG(bool, true), Q_ARG(QString, )))connect(serial, SIGNAL(openMsg(bool,QString)), obj, SIGNAL(slotOpenSerial(bool,QString)));2.在qml中调用 QGroupButton 自定义的按钮组 Item {id: itemLayout.fillWidth: trueLayout.preferredHeight: 36property alias checkedButton: btngroup.checkedButtonproperty int btnIndexChanged: 0onBtnIndexChangedChanged: {if(btnIndexChanged 0) {checkedButton ok}else {checkedButton cancle}}ButtonGroup {id: btngroupexclusive: truebuttons: row.childrenonCheckedButtonChanged:{console.log(button text: , checkedButton.text)btnIndexChanged checkedButton ok ? 0 : 1;}}Rectangle{id: rectanchors.fill: parentRowLayout {id: rowanchors.fill: rectspacing: 6QButton{id: ok; text: OK}QButton{id: cancle; text: Cancle}}} }signal slotOpenSerial(bool isOpen, string error)onSlotOpenSerial: {//console.log(isOpen, error)if(!isOpen){group.btnIndexChanged 1} }qrc:/Form02.qml //自定义的按钮组 QGroupButton{id: groupLayout.columnSpan: 2Layout.fillWidth: trueonCheckedButtonChanged:{if(checkedButton.text OK){open serial.open(portName.currentText, cboxBuad.currentText, dataBits.currentText,stopBits.currentText, parity.currentText, flowControl.currentText);console.log(serial return: , open)}else{serial.close()}} }下面代码仅看这段 QButton{ text: 1; onClicked: { //直接调用接口 serial.say(); //通过信号调用 serial.sendMsg(TTTT); } } Rectangle {Layout.columnSpan: 2Layout.fillWidth: trueLayout.fillHeight: truecolor: #156448Flow {anchors.fill: parentanchors.margins: 9spacing: 6QButton{text: 1;onClicked: {serial.say();serial.sendMsg(TTTT);}}QButton{text: 2}QButton{text: 3}QButton{text: 4}QButton{text: 5}QButton{text: 6}QButton{text: 7}QButton{text: 8}QButton{text: 9}QButton{text: 10}QButton{text: 11}QButton{text: 12}QButton{text: 13}QButton{text: 14}QButton{text: 15}QButton{text: 16}QButton{text: 17}QButton{text: 18}QButton{text: 19}Rectangle {width:60height: 26color: greenproperty alias text: in1.textonTextChanged: console.log(text)TextInput {id: in1anchors.fill: parenttext: inputcolor: redKeyNavigation.tab: in2selectByMouse: true}}Rectangle {width:60height: 26color: greenTextInput {id: in2anchors.fill: parenttext: inputcolor: redKeyNavigation.tab: in1KeyNavigation.up: in1}}Loader {sourceComponent: testComponent}} }结果如图 //--------------------------------------------------------- MainWindow CurrentThread QThread(0x24ce850) //主线程 //--------------------------------------------------------- qml: button text: OK // 点击OK按钮打印 qml: button text: Cancle // 打开串口失败取消OK按钮默认Cancle按钮被点击打印 qml: serial return: false // serial.open(…)返回值打印 SerialPort CurrrntThread QThread(0x24ce850) // serial.say() 函数运行的线程 //--------------------------------------------------------- SerialPort CurrrntThread QThread(0xfcc9f0, name “串口线程”) // serial.sendMsg(“TTTT”)运行的线程 “TTTT” // 槽函数打印 //---------------------------------------------------------
http://www.yutouwan.com/news/145128/

相关文章:

  • 苏州网站推广哪家好企业网站哪个平台好
  • 模块网站和定制网站区别免费app软件
  • 龙岗在线网站制作南通高端网站设计开发
  • 做fpga的网站珠海集团网站建设
  • 校园网站建设培训的心得体会临淄信息网最新招聘信息
  • 商城网站设计价格电商型网站
  • 广州企业网站建站公司哪家好做旅游网站需要引进哪些技术人才
  • 网站界面用什么做定制网站开发公司哪家好?点击查看
  • 手机网站制作报价表做简历比较好的网站叫什么
  • 怎么做企业网站排名临沂网站建设联系方式
  • 西安网站建设网站上海公交建设公司官网
  • 西安正邦网站建设贵州省城市建设厅网站
  • 阿里巴巴如何做网站wordpress官网中文版下载
  • 高端服装产品网站建设成都网站制作需要多少钱
  • 心理学网站开发广东知名网站建设
  • 农资网站建设响应式布局详解教程
  • wordpress define百度seo新站优化
  • wordpress下载资源站主题wordpress 标签页logo
  • 发布网站的空间莒县建设局官方网站
  • 境外公司在国内建网站vs2015做网站如何添加控件
  • 新网站做seo免费下载百度
  • 网站建设费放什么科目河北省招投标信息网
  • 景区网站建设案例在网上做效果图赚钱的网站
  • 网站录入信息 前台查询功能怎么做邢台做网站费用
  • 网站分类有哪几类鞍山网站怎么做出来的
  • 做民宿要给网站多少合同钱网站背景动图怎么做
  • 移动app与网站建设的区别电商网站如何备案
  • 中小企业网站建设开题报告discu论坛网站模板
  • 沈阳网站建设发布平面设计接单报价表
  • 无锡专业制作网站中国知名企业排行榜