您好我有以下代码:
void MainWindow::on_listWidgetNotes_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)//Test!
{
if(current != NULL)
{
ui->plainTextEditContent->setEnabled(true);
change = false;
if(isModified)
{
auto reply = QMessageBox::question(this, "Test", "Do you want save changes?", QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel);
if (reply == QMessageBox::Yes) on_pushButtonSave_clicked();
else if(reply == QMessageBox::No) notes.closeFile();
else
{
//ui->listWidgetNotes->blockSignals(true);
ui->listWidgetNotes->setCurrentItem(previous);
//ui->listWidgetNotes->blockSignals(false);
return;
}
}
isModified = false;
this->setWindowTitle(current->text()+" - VfNotes 1.0");
ui->plainTextEditContent->setPlainText(notes.openFile(current->text()));
}
}
在指定的情况下,在选择取消按钮后,代码必须显示消息框并将焦点设置在上一个项目上。
但setCurrentItem
使用此消息框再次调用on_listWidgetNotes_currentItemChanged
。使用后blockSignals
焦点不会回到前一个元素上。单击取消后如何设置对前一项目的关注,on_listWidgetNotes_currentItemChanged
未再次调用?
答案 0 :(得分:0)
因此,如果这是在选择更改时调用的插槽,则调用此插槽,创建另一个插槽,然后从那里调用此函数。 现在这个新的插槽将有前一个项目,如果函数返回一本书而不是void表示按下了取消,那么你再次调用setCurrentItem ...