0

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

4

0 回答 0