置頂
關於大量同類widget的event function
大家好~
這個問題其實不僅限於Qt, 大概有GUI介面的環境都會遇到
只是想請問一下, 有沒有比較好的寫法..?
假設我的MainWindow中有16個PushButton
我想要讓每一個按鈕按下之後可以對自己的顏色做變化
單一個按鈕的source code應該會類似這樣:
void PushButton_1 () {
PushButton_1->ChangeColor(xxx);
}
土砲方式就是長了16個像這樣的function
但是這樣不僅難看, 又不好維護
想請教各位前輩有沒有比較好的方式呢?
up vote
0
在 Qt 裡的正規解就是 QSignalMapper
這個東西可以自動把類似的 signals 集中管理
但就這個例子而言, 如果要改變的顏色都一樣, 只有 button 不一樣
那麼其實可以用 sender() 就好
connect(button1, SIGNAL(clicked()), this, SLOT(changeButtonColor()));
connect(button2, SIGNAL(clicked()), this, SLOT(changeButtonColor()));
...
void Receiver::changeButtonColor() {
auto button = qobject_cast<MyButton *>(sender());
button->changeColor(...);
}
會員登入
(先登入會員才能回覆留言喔!)