我有一个用户选择文件的对话框 . 我在行编辑中添加了 QCompleter
,自动建议下一个文件名:
但是,如果用户点击文件,建议就会消失:
如果选择了目录并且显示该目录中的文件,我希望它们重新出现 . 我试图在 QLineEdit::textChanged
信号内做到这一点 . 我将它连接到这样的插槽:
void ImportFromExcelDialog::pathChanged( const QString& path )
if(path.length()>0) {
QFileInfo info(path);
if( info.exists() && info.isFile() && info.isReadable() ) {
// File selected, do stuff with it
}
else {
// If a directory
if((info.exists() && info.isDir())) {
if(!path.endsWith("/"))
ui->fileLineEdit->setText(path + "/");
// Assume QCompleter* completer_; which is set in constructor
if(completer_!=nullptr)
completer_->complete();
}
}
}
}
问题是调用 complete()
显示旧的文件列表,父目录的文件列表:
我可以根据需要多次点击遥测,显示不会改变 .
那么如何强制 QCompleter
重新出现并处理文本字段的 new 值?