哇,我居然发现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吧,好了就写这里吧,大家可以试试其他相同的问题,让我们一起加油,努力的学习吧,一起共同进步。

    喜欢这个博客的朋友可以关注我的博客,大家一起加油学习一下。

 

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