2012-01-11 10 views
1

LinuxでQt Creatorでコンパイルしています。私はすでにQtデザイナでGUIの基本を終えました。今私はファイルマネージャを開く方法があり、私の名前のディレクトリを作成させることができるかどうかを知る必要がありますか?ファイルマネージャで空のディレクトリを作成する方法

私はこれが見つかりました:私はこの方法でのQPushButtonを接続し、その中に上記を書いている

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

http://doc.qt.io/archives/qt-4.7/qfiledialog.html#directoryを参照)

を。 問題は次のとおりです。ボタンを押したときにファイルマネージャが開いていない。さらに、これは存在しないファイル(AnyFileを参照)を作成するためにのみ有効ですが、既存のディレクトリを作成する必要はありません。

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

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

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

答えて

1

ここでは、存在しないフォルダ/ファイルの問題を解決するためです:

あなたは、いくつかの変数が必要になります。

QString path_trunk; 
QString name; 

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

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

QDir(path_trunk).mkdir(name); 

別の、よりユーザーフレンドリーな方法は、ユーザが入力することができるライン/テキスト編集素子を介して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の[フォルダの作成]をカスタムファイルマネージャウィジェットでクリックするだけ)

+0

それは役に立ちましたか?役に立つと思われる場合は、それを有用/解決策としてマークするか、それを上書きすることを検討してください。 – mmoment

+0

まず、あなたの返事のためにthx。あなたの最初の方法は、私が書いた第2のコードに似ています。 2番目の考えは面白いです。 2つのUI LineEditから名前とパスを取得したいとします。これもいい考えですが、ファイルマネージャを開いてファイルマネージャを使ってディレクトリを作成することができないかどうかを尋ねなければなりません。 :)私は15の評判を持っていないので、現時点で私はあなたの答えをupvoteすることはできません。 – Streight

関連する問題