1

QtCreatorを使用してLinuxでコンパイルしています。QtDesignerを使用してGUIの基本をすでに完了しています。ここで、ファイルマネージャを開いて、自分で名前を付けたディレクトリを作成できる方法があるかどうかを知る必要がありますか?

私はこれを見つけました:

QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::AnyFile);

http://doc.qt.io/archives/qt-4.7/qfiledialog.html#directoryを参照してください)

QPushButtonをメソッドに接続し、上記をその中に書き込みました。問題は次のとおりです。ボタンを押してもファイルマネージャが開きません。さらに、これは存在しないファイルを作成する場合にのみ機能するはずです(AnyFileを参照)が、存在しないディレクトリを作成する必要があります。

私はまた、ディレクトリを作成するためのこの可能性を知っています:

QDir("/home/name").mkdir("NewDirectory");

しかし、名前とディレクトリは常に同じであるため、これは私の要求を満たしていません。

4

1 に答える 1

1

存在しないフォルダ/ファイルの問題を解決するには、次のようにします。

いくつかの変数が必要です:

QString path_trunk;
QString name;

ボタンによって呼び出されているスロットでは、パラメータを調整して、要求に合うようにする必要があります。たとえば、ボタンを介して受け継がれるパラメータや、いくつかの内部イベントによって操作されるパラメータを使用できます。その場合、もちろん、変数を使用して動的にフォルダーを作成できます。

path_trunk = QString("/home/username/");
name = QString("Folder_name");

QDir(path_trunk).mkdir(name);

もう1つの、よりユーザーフレンドリーな方法は、ユーザーがカスタムパスを入力できるようにする行/テキスト編集要素を介してUIから値をフェッチすることです。UIクラスを介して値を読み取ることができます(ここでは、標準のQT名uiを使用しました)。別の名前を選択した場合は、lineEditという名前が異なる場合があります。ただし、それでもデータにアクセスして、基になるコードでidを動的に使用することができます。信号とメソッドを正しく接続してください。

void MainWindow::on_pushButton_clicked_path_dynamic()
{
    QString temp_path = ui->lineEdit->text();
    QDir().mkdir(temp_path);
}

void MainWindow::on_pushButton_clicked_trunk_plus_dynamic()
{
    QString ext_path = ui->lineEdit->text();
    QDir(path_trunk).mkdir(ext_path);
}

私の理解では、ある種のファイルマネージャを使用したいので、別のアプローチを次に示します。

実際にできることは、独自のファイルマネージャーウィジェットを作成することです。QDirメソッドは基本的に、フォルダを表示するために必要なすべての情報を提供します。一部のファイルでItem-based QTreeWidgetは、QTreeWidgetのシグナルとスロットを使用してナビゲートできるため、ナビゲーションも簡単な作業になります。ツリーにフォルダー情報を入力するだけで済みます。新しいフォルダの作成は、ユーザーの操作(マウスの右ボタンまたはカスタムファイルマネージャウィジェットのQPushButton「フォルダの作成」をクリック)のみになります。

于 2012-01-11T23:24:04.520 に答える