我有一个对话框,用户可以在其中选择文件。我添加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
重新出现并处理文本字段的新值呢?