• 2997阅读
  • 0回复

[讨论]发现一个问题,不知道算不算是BUG [复制链接]

上一主题 下一主题
离线friendbaby
 

只看楼主 倒序阅读 楼主  发表于: 2014-09-30



        重现:只有一个QWidget,它包含了两个按钮,一个QListWidget。当QListWidget中有item选中的时候,两个按钮可用,当没有项选中的时候,两个按钮变灰。
问题就处在这里:当只有一项的时候,如果我点击remove按钮,最后一项会被删除。但会接收到两次 QListWidget::currentRowChanged(int)信号,第一次是-1,第二次是0。



好了,直接上代码,有兴趣的同学可以调试看一下。我经过调试,已经大概看出了端倪

#include <QDebug>

MyWidget::MyWidget(QWidget *parent, Qt::WFlags flags)
    : QWidget(parent, flags)
{
    ui.setupUi(this);
    connect(ui.listWidget,SIGNAL(currentRowChanged(int)),SLOT(currentrRowChanged(int)));
    connect(ui.pushButton,SIGNAL(clicked()),SLOT(remove()));

    ui.listWidget->setCurrentRow(-1);
}

MyWidget::~MyWidget()
{

}

void MyWidget::currentrRowChanged( int row )
{
        qDebug()<<row;
    ui.pushButton->setEnabled(row!=-1);
    ui.pushButton_2->setEnabled(row!=-1);
}

void MyWidget::remove()
{
    int row=ui.listWidget->currentRow();

    if (row==-1)
    {
        return;
    }

    delete ui.listWidget->takeItem(row);
}


控制台输出:
0
-1
0


Smiling is best language , can express everything , also can conceal everything.
快速回复
限100 字节
 
上一个 下一个