我有一个用户选择文件的对话框 . 我在行编辑中添加了 QCompleter ,自动建议下一个文件名:

image description

但是,如果用户点击文件,建议就会消失:

image description

如果选择了目录并且显示该目录中的文件,我希望它们重新出现 . 我试图在 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() 显示旧的文件列表,父目录的文件列表:

image description

我可以根据需要多次点击遥测,显示不会改变 .

那么如何强制 QCompleter 重新出现并处理文本字段的 new 值?