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