![](/img/trans.png)
[英]Qt attaching itemChanged signal to QStandardItem doesn't work
[英]Blocking signal one time in Qt doesn't work correctly
嗨,我有以下代码:
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
?
因此,如果这是在选择更改时调用的插槽,则改为调用该插槽,创建另一个插槽,然后从那里调用此函数。现在,此新插槽将具有上一个项目,并且从那里开始返回一本书,而不是void表示按下了取消键,然后再次调用setCurrentItem ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.