哇,我居然發現qt中的一個小bug

前段時間寫一個qt項目的程序,偶然發現了一個ui界面問題,感覺是編譯器遺留的問題,下面我們來看看這個bug是什麼吧:

相同的配置屬性,得到不同的結果:

兩邊的屬性配置是相同的,但是出現上面的結果: 

第一步:我創建一個界面,如下圖:

功能非常的簡單,對應的兩個按鈕的代碼:

void MainWindow::on_pushButton_clicked()
{
    ui->groupBox->setEnabled(true);
}

void MainWindow::on_pushButton_2_clicked()
{
    ui->groupBox_2->setEnabled(true);
}

 爲了做對比,第一步,在沒有對groupBox_2進行任何的操作下,講groupBox_2的enable對號去掉(再次選中就會顯示group裏面的內容),出現如下圖:

對groupBox,我們先將裏面的單選按鈕,男女的enable先去掉,如下圖:

然後在把男女的enable選中,恢復到最開始的狀態:

 在然後將groupBox的enable去掉:

 這個時候我們對groupBox,groupBox_2 中的enable都選中的話,對應的男女都會顯示出來,不會變灰:

同時兩個按鈕的功能就是讓enable變爲true,然後運行起來卻出現問題了:

 瘋狂的點擊第一個按鈕,死活變不成第二個的樣子。配置屬性都是一樣的,你也來試試吧。

 但是,在界面上選中enable是可以變化的,這個也算設計的bug。

解決方案

那我們如和解決這個bug,變成現在這個樣子,現在不論如何去點enable,都達不到groupBox_2的效果,如何處理呢:

 我們看到圖片中右下角的畫圈的箭頭,把groupBox,還有單選按鈕,都點擊一下,就會回到最初的狀態,然後我們在將   groupBox變爲enable 取掉,就會達到最初的狀態。

原因分析:

其實我們在對應的ui 的 xml文件中變可以看到問題所在:

我們把單選按鈕,變換後,先enable去掉,在點擊上:

對應的xml文件中,會多了一個屬性:

 我們來看groupBox_2中的按鈕屬性:

這裏並沒有enable屬性,當我們把groupBox中屬性enable去掉:

 對應的xml:

當我們在界面點擊的時候,選中groupBox中enable中,這裏的bool 會變成true,但是我們使用代碼:

void MainWindow::on_pushButton_clicked()
{
    ui->groupBox->setEnabled(true);
}

     這裏的兩個單選按鈕bool是false,並沒有變成true,所以纔會出現點擊按鈕後,兩個單選按鈕沒有亮起來的主要原因,

這裏qt設計有些問題,對一個界面改變,應同時改變group中的其他值。對應我們使用的解決方案後,取消改變後,

我們看到對應屬性都去掉了,又恢復了當初最開始的狀態。

    這樣的問題不知道你如何想的呢,以此類推的話,其他控件應該也會出現這樣的一個小問題,這個也算一個小bug吧,好了就寫這裏吧,大家可以試試其他相同的問題,讓我們一起加油,努力的學習吧,一起共同進步。

    喜歡這個博客的朋友可以關注我的博客,大家一起加油學習一下。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章