ListViewにファイルをドラッグ&ドロップできるようにしてみる。ListViewにファイルをドラッグ&ドロップするとそのファイルのフルパスがListViewに追加されるようなプログラムを作ってみた。
QListViewを継承したListViewってクラスを用意する。dragEnterEvent()、dragMoveEvent()、dropEvent()メソッドをオーバーライトして処理を実装する。
次のような感じ(プロジェクトをまとめたのを後に貼っとく)
続きを読む-->
ListViewにファイルをドラッグ&ドロップできるようにしてみる。ListViewにファイルをドラッグ&ドロップするとそのファイルのフルパスがListViewに追加されるようなプログラムを作ってみた。
QListViewを継承したListViewってクラスを用意する。dragEnterEvent()、dragMoveEvent()、dropEvent()メソッドをオーバーライトして処理を実装する。
次のような感じ(プロジェクトをまとめたのを後に貼っとく)
続きを読むQtでmacOS用にビルドするとAPP Bundleでできるんだけど、アイコンがデフォルトだったり、ダイナミックリンクライブラリが入ってなかったりするので、それをいい感じする方法をメモっておく。忘れそうなんで(^^;)
まず、アイコン。
まずは、
アイコンファイルはコマンドラインでiconutilを使っても作れる。
次は、ダイナミックリンクライブラリを含める。
これでダイナミックリンクライブラリが含まれる。
QGraphicViewを使って画像ファイルを表示してみる。
手順はこんな感じだ。
ちょうど、QGraphicsViewが額縁やフォトフレーム、QGraphicsSceneがキャンバスや写真、QGraphicsPixmapItemはキャンバスに描かれたり、写真に撮られたりする物になる。QGraphicsPixmapItemの部分は正確にはQGraphicsItemを継承したクラスのインスタンスが使え、矩形やポリゴンなどもある。
Widgetのプロジェクトを作成する。
UIにGraphics Viewとボタンを貼る。ボタンを押したらC:\tmp\hoge.pngを読み込んで表示するようにしたいと思う。
WidgetクラスにQGraphicsSceneを追加する。
QGraphicsScene scene;
ボタンを押した時の処理を次のようにする。
// イメージファイルを読み込む
QImage image("c:\\tmp\\hoge.png");
// イメージをシーンに追加する。
QGraphicsPixmapItem *image_item = new QGraphicsPixmapItem(QPixmap::fromImage(image));
scene.addItem(image_item);
// シーンをQGraphicsViewに設定する。
ui->graphicsView->setScene(&scene);
ファイルオープンダイアログを出してみる。
QString filename = QFileDialog::getOpenFileName(this, tr("hoge"), "c:/",
tr("Text files(*.txt);;All Files(*.*)"));
ケッコー簡単。ファイルオープンダイアログでキャンセル押すとfilenameはNULL文字列になる。
getOpenFileName以外にもファイルやディレクトリ選択関係のダイアログが表示できる。
getOpenFileName | ファイルを1つ選択できるダイアログが表示される。 |
getOpenFileNames | ファイルを複数選択できるダイアログが表示される。 |
getOpenFileUrl | ファイル(リモート)を1つ選択できるダイアログが表示される。 |
getOpenFileUrls | ファイル(リモート)を複数選択できるダイアログが表示される。 |
getExistingDirectory | ディレクトリを選択できるダイアログが表示される。 |
getExistingDirectoryUrl | ディレクトリ(リモート)を選択できるダイアログが表示される。 |
getSaveFileName | ファイル保存ダイアログが表示される。 |
getSaveFileUrl | ファイル(リモート)保存ダイアログが表示される。 |
リモートとそうでないのはWindowsでは違いがないように見えるな~~。
別のプラットフォームだと違うのかもしれないです。(未確認)