QFileDialog に関するテクニック (1)
今回はQt(C++)のQFileDialogに関するテクニックです。
使用するOSは、Ubuntu 18.04 LTS, Qt 5.9.5, x86_64-linux-gnu-g++-8 です。
QFileDialogの現時点のバグの1つに、表示されるダイアログがOSのNativeダイアログで表示されないケースがあります。
Qtの標準ダイアログも悪くありませんが、ダイアログサイズが微妙に小さい場合があり、日時の並べ替えが面倒です。
そこで、ダイアログ表示の際にダイアログサイズを指定するテクニックをご紹介します。
1.初期表示で表示されるダイアログはこんな感じです。
表示されるダイアログ
使用したコード:
QFileDialog dlgfile(this);
dlgfile.setOptions(QFileDialog::ReadOnly|QFileDialog::DontUseNativeDialog);
dlgfile.setWindowTitle(tr("test"));
dlgfile.setDirectory(QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
dlgfile.setNameFilter(tr("All (*.*)"));
dlgfile.exec();
2.今回は resize() を使って、横幅だけを 820 pixel に拡張してみます。
初期設定系の関数をいくつか試しましたが効果がなく、最終的にたどり着いたのが、resize() でした。
表示されるダイアログ
使用したコード:
QFileDialog dlgfile(this);
dlgfile.setOptions(QFileDialog::ReadOnly|QFileDialog::DontUseNativeDialog);
dlgfile.setWindowTitle(tr("test"));
dlgfile.setDirectory(QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
dlgfile.setNameFilter(tr("All (*.*)"));
QSize size=dlgfile.size();
dlgfile.resize(820,size.height());
dlgfile.exec();
縦も指定すれば、同じように拡張できます。
QSize size=dlgfile.size();
で、初期表示のダイアログサイズを取得することで、高さを変更させず横幅だけを変更しています。
横、縦ともに指定する場合、
dlgfile.resize(820,600);
のように1行だけで炭ます。
たったこれだけのことですが、この結論に達するまで結構時間がかかりますよね。
こういったテクニックは。ぼんやりと覚えておくだけでもかなりの時間短縮できます。
次回は、さらに QFileDialog を使いやすくするためのテクニックを紹介します。