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