ユーザーがファイルを選択するダイアログがあります。行の編集に追加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
に再表示して処理するにはどうすればよいでしょうか。