目錄
- 引出
- 畫壓縮彈簧
- 畫等距部分
- 畫兩端的壓縮部分
- 曲線縫合和掃掠
- 封閉曲面得實體
- 總結
- 異形彈簧
- 新建幾何體
- 草圖編輯,畫一條樣條線
- 進行掃掠,圓心和半徑
- 畫出曲面上的螺旋線
- 再次選擇掃掠,圓心和半徑
- 其他
- 自定義信號和槽
- 1.自定義信號
- 2.自定義槽
- 3.建立連接
- 4.進行觸發
- 自定義信號重載
- 帶參數的
- 按鈕觸發
- 信號觸發信號
- 拓展
- lambda表達式
- 返回值
- mutable修飾
- 案例
引出
CATIA入門操作案例——壓縮彈簧繪制,螺旋線的使用,法則曲線應用
畫壓縮彈簧
畫等距部分
通過點,方向畫一條直線
畫一個點作為彈簧的起始點
畫中間的等距部分
畫兩端的壓縮部分
曲線縫合和掃掠
縫合3段螺旋線
采用掃掠命令畫螺旋曲面
封閉曲面得實體
零件設計模塊進行曲面封閉
總結
CATIA入門操作案例——壓縮彈簧繪制,螺旋線的使用,法則曲線應用
其他內容
異形彈簧
新建幾何體
草圖編輯,畫一條樣條線
進行掃掠,圓心和半徑
畫出曲面上的螺旋線
定義直線,選擇曲線的角度/法線
在曲線上創建點
支持面選擇掃掠面,角度7度,終點設置大一點,選中支持面上的幾何圖形
再次選擇掃掠,圓心和半徑
雙擊修改,調整一下樣條曲線
其他
自定義信號和槽
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();});