重现:只有一个
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