ディレクトリ選択ダイアログの表示 [Qt]
ウィンドウタイトルを変えるだけで、えらいとまどってしまいましたが、気を取り直して、とりあえず、各ボタンのスロットを作っていきます。まずは、関数の枠から・・。
ボタンを右クリックし、「Go to slot...」を実行して行きます。
追加は容易になりました
残り三つのボタンに対応するslotを作成して、ヘッダファイルを見てみたら、インデントがおかしいです・・。カーソル位置がおかしかったのか・・?
これは手で直します
ソースを見る限り、追加したslotは「private slots:」ラベルの下に追加されていくみたいですね。後から追加した方が上の方に追加されています。
ちなみに、関数の枠もちゃんとできています。
こっちは作成した順に追加されています
ログを仕込んで、実行したところ、全てのボタンが反応しました。
ログで確認
では、とりあえずQFileDIalogを「追加」ボタンから呼び出してみます。簡単に使いたいならstatic関数を呼べばいいとのこと。下記の関数が用意されています。
コピー元の追加は複数指定できた方が便利ですし、できたらディレクトリだけでなくファイル名も指定できると自由度が増す気がします。と言うことで、QFileDialog::getOpenFileNamesを使ってみたいのですが、これがディレクトリを指定できるのかどうかが不明です。まあ、試してみましょう。
引数は下記のものが用意されています。
とりあえず、このように実装してみました。
うまくいくか?
実行して、ファイルダイアログを起動したところ、このような画面に・・。タイトルが化けてます・・。
タイトル部分が文字化け・・
ディレクトリを選択して、「開く」を押したところ、そのディレクトリ内に入ってしまいました・・。ファイルを選択して「開く」を押したらうまくいった様です・・。このダイアログではディレクトリは選択できませんね・・。
と言うことで、QFileDialog::getOpenFileNamesでは、ディレクトリの選択は出来ませんね・・。
仕方がないので、QFileDialog::getExistingDirectoryを利用します。
うまくいくか?
これで、1つづつですが、ディレクトリの選択は出来るようになりました。が、相変わらず、キャプションの文字化けが残っています・・。
文字化けを直したい
次回はこれを調べましょう。つづく。
ボタンを右クリックし、「Go to slot...」を実行して行きます。
追加は容易になりました
残り三つのボタンに対応するslotを作成して、ヘッダファイルを見てみたら、インデントがおかしいです・・。カーソル位置がおかしかったのか・・?
これは手で直します
ソースを見る限り、追加したslotは「private slots:」ラベルの下に追加されていくみたいですね。後から追加した方が上の方に追加されています。
ちなみに、関数の枠もちゃんとできています。
こっちは作成した順に追加されています
ログを仕込んで、実行したところ、全てのボタンが反応しました。
ログで確認
では、とりあえずQFileDIalogを「追加」ボタンから呼び出してみます。簡単に使いたいならstatic関数を呼べばいいとのこと。下記の関数が用意されています。
QFileDialog::getExistingDirectory | 存在するディレクトリの指定に使用。 |
QFileDialog::getOpenFileName | 存在するファイルを一つだけ指定するのに使用。 |
QFileDialog::getOpenFileNames | 存在する一つ以上のファイルを指定するのに使用。 |
QFileDialog::getSaveFileName | 一つのファイル名を指定するのに使用。ファイルは存在していても無くてもどちらでもいい。 |
コピー元の追加は複数指定できた方が便利ですし、できたらディレクトリだけでなくファイル名も指定できると自由度が増す気がします。と言うことで、QFileDialog::getOpenFileNamesを使ってみたいのですが、これがディレクトリを指定できるのかどうかが不明です。まあ、試してみましょう。
引数は下記のものが用意されています。
QWidget *parent = 0 | 親ウィジェット。これを設定するとモーダルダイアログになるとのこと。親ウィジェットの中央に表示されるとのこと。thisでいいと思います。 |
const QString & caption = QString() | ダイアログのタイトルバーに表示される文字列ですね。設定しない場合はデフォルトの文字列が使われるとのこと。 |
const QString & dir = QString() | ワークディレクトリ。ファイル名を含む場合は、そのファイルが選択された状態になる。 |
const QString & filter = QString() | フィルター。複数のフィルターを指定する時は、「;;」で区切るとのこと。書式が不明・・。 |
QString * selectedFilter = 0 | 選択されているフィルター。 |
Options options = 0 |
とりあえず、このように実装してみました。
void MainWindow::on_addButton_clicked() { qDebug() << "on_addButton_clicked()"; QStringList *srcList = new QStringList(); *srcList = QFileDialog::getOpenFileNames(this, tr("バックアップ元の選択")); qDebug() << *srcList; delete srcList; } |
実行して、ファイルダイアログを起動したところ、このような画面に・・。タイトルが化けてます・・。
タイトル部分が文字化け・・
ディレクトリを選択して、「開く」を押したところ、そのディレクトリ内に入ってしまいました・・。ファイルを選択して「開く」を押したらうまくいった様です・・。このダイアログではディレクトリは選択できませんね・・。
と言うことで、QFileDialog::getOpenFileNamesでは、ディレクトリの選択は出来ませんね・・。
仕方がないので、QFileDialog::getExistingDirectoryを利用します。
void MainWindow::on_addButton_clicked() { qDebug() << "on_addButton_clicked()"; QStringList *srcDir = new QStringList(); *srcList = QFileDialog::getExistingDirectory(this, tr("バックアップ元の選択")); qDebug() << *srcDir; delete srcDir; } |
これで、1つづつですが、ディレクトリの選択は出来るようになりました。が、相変わらず、キャプションの文字化けが残っています・・。
文字化けを直したい
次回はこれを調べましょう。つづく。
コメント 0