网站建设 网络推广广西工商网站查询企业信息

目录
- 引出
 - CAD/CAE/CAM几何引擎-软件概述 郝建兵
 - CAD
 - CAE
 - CAM
 
- 几何模型内核
 - ACIS 两个老大之一
 - Open Cascade
 - Parasolid 两个老大之一
 - Autodesk的内核
 
- 总结
 - 其他
 - 自定义信号和槽
 - 1.自定义信号
 - 2.自定义槽
 - 3.建立连接
 - 4.进行触发
 
- 自定义信号重载
 - 带参数的
 - 按钮触发
 - 信号触发信号
 - 拓展
 
- lambda表达式
 - 返回值
 - mutable修饰
 - 案例
 
引出
讲座学习截图——《CAD/CAE/CAM几何引擎-软件概述》(一)
https://www.bilibili.com/video/BV18j411z7mA/?spm_id_from=333.788&vd_source=826d5f626e7c248ff07419b116e3d87c
CAD/CAE/CAM几何引擎-软件概述 郝建兵
CAD





CAE


CAM




几何模型内核

国内用的大多是 Open CASCADE,但是技术比较老了

ACIS 两个老大之一

3D ACIS Modeler | Spatial





Open Cascade



Parasolid 两个老大之一



Autodesk的内核

总结
讲座学习截图——《CAD/CAE/CAM几何引擎-软件概述》(一)
其他
自定义信号和槽
1.自定义信号
写到signals下
 返回void
 需要声明,不需要实现
 可以有参数,可以重戟

2.自定义槽
返回void
 需要声明,也需要实现
 可以有参数,可以重载
 写到public slot下或者public或者全局函数

3.建立连接

// 老师饿了,学生请吃饭
connect(te,&Teacher::hungry,st,&Student::treat);
 
4.进行触发

自定义信号重载
当自定义信号和槽出现重载
 8.1 需要利用还数指针明确指向函数的地址·
 8.2void(Teacher::tsignal )QString )=&Teacher::hungry;
 8.3 QString转成char *
 8.3.1.ToUtf80转为QByteArray
 8.3.2.Data0转为Char *
 8.4信号可以连接信号
 8.5断开信号disconnect
带参数的
    void (Teacher::*teacherSignal)(QString) = &Teacher::hungry;void (Student::*StudentSlot)(QString) = &Student::treat;
 


void Student::treat(QString foodName){// QString -> char * 先转成QByteArray(.toUtf8())  再转成Char* ()qDebug() << "请老师吃。。。" << foodName.toUtf8().data();
}
 
按钮触发

    // 用一个按钮调用下课QPushButton *btn = new QPushButton("下课了",this);// 重置窗口daxiaothis->resize(600,400);connect(btn,&QPushButton::clicked,this,&Widget::classIsOver);
 
信号触发信号

    // 无参的信号和槽连接void (Teacher::*teacherSignal2)(void) = &Teacher::hungry;void (Student::*StudentSlot2)(void) = &Student::treat;connect(te,teacherSignal2,st,StudentSlot2);// 信号连接信号connect(btn,&QPushButton::clicked,te,teacherSignal2);
 
断开信号disconnect
拓展
1、信号是可以连接信号
 2、一个信号可以连接多个槽函数
 3、多个信号可以连接同一个糟函数
 4、信号和槽函数的参数必须类型一一对应
 5、信号和槽的参数个数是不是要一致?信号的参数个数可以多余槽函数的参数个数

connect(信号的发送者,发送的信号signal信号),信号接受者,槽函数SLOT)
 优点:参数直观
 缺点:编译器不会检测爸数类型:
lambda表达式






    [=](){btn->setText("aaa");}();
 
返回值

    int ret = []()->int{return 1000;}();qDebug() << "ret = " << ret;
 
mutable修饰

    QPushButton *myBtn1 = new QPushButton(this);QPushButton *myBtn2 = new QPushButton(this);myBtn1->move(100,100);int m = 10;connect(myBtn1,&QPushButton::clicked,this,[m]()mutable {m=100+10;qDebug()<< m;});connect(myBtn2,&QPushButton::clicked,this,[=](){qDebug()<<m;});qDebug() << m;
 
案例

    QPushButton * btnClose = new QPushButton;btnClose->setText("close");btnClose->move(100,0);btnClose->setParent(this);connect(btnClose,&QPushButton::clicked,this,[=](){btnClose->setText("关闭");emit te->hungry("娃哈哈");
//        this->close();});
