日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

记录一种多个按钮中每次只能选中一个的实现方式

發布時間:2024/9/27 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 记录一种多个按钮中每次只能选中一个的实现方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

闡述

本文旨在說明實現的思路。
當窗口創建很多QPushButton或者QPushButton的子類的時候,若要實現在眾多的按鈕中,每次被點擊的按鈕被選中,下一次點擊另一個按鈕的時候,上一個被選中的按鈕恢復被選中之前的顏色,可以使用下面這種實現。

思路

分4步:
1.創建按鈕的時候,設置按鈕可選中,使用函數setCheckable;
2.創建按鈕的時候,將所有創建的按鈕保存在一個容器中;
3.綁定按鈕的點擊信號與處理點擊的槽函數;
4.定義類的全局變量,QPushButton*類型的指針,或者自定義的繼承于QPushButton的按鈕的指針,用來指向上一次被選中的按鈕對象,構造函數中初始化該指針為nullptr,在按鈕點擊信號綁定的槽函數中,判斷該指針是否為空,不為空時,將該指針所指向的對象設置為非選中,(即將上一次被選中的按鈕設置為為選中),然后更新當前被選中的按鈕為上一次選中的按鈕。
大體實習如下:

//按鈕可選中,選中下一個前將之前的先設置為未選中if (m_beforeCheckedBtn) {m_beforeCheckedBtn->setChecked(false);}saveBeforeBtnCheckedBtn();

上述代碼中的函數的實現如下:

void saveBeforeBtnCheckedBtn() {QMap<int,myButton*>::iterator it;for (it = m_idBtnMap.begin(); it != m_idBtnMap.end(); ++it) {if (it.value()->isChecked()) {myButton* temp = it.value();m_beforeCheckedBtn = temp;break;}} }

上述代碼只是部分,重在理解其大意。

總結

以上是生活随笔為你收集整理的记录一种多个按钮中每次只能选中一个的实现方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。