私はQT4を使用しているC++プロジェクトを持っています。 QT Designerを使用してフォームを作成しました。上部バーには"File -> Open Image"
があります。 「Open Image
」はQTデザイナによってのQObject
として指定されています。QT UIメニューバー(トップメニュー)からファイル(画像)を開く方法
この画像を選択してそのパスを取得できるようにするには、このQObject
を押したユーザーからどうやって行くのですか?
私はQT4を使用しているC++プロジェクトを持っています。 QT Designerを使用してフォームを作成しました。上部バーには"File -> Open Image"
があります。 「Open Image
」はQTデザイナによってのQObject
として指定されています。QT UIメニューバー(トップメニュー)からファイル(画像)を開く方法
この画像を選択してそのパスを取得できるようにするには、このQObject
を押したユーザーからどうやって行くのですか?
一般的に、メニュー項目はQActionオブジェクトです。オブジェクトをアクションにすることができれば、それは良い最初のステップになります。
QAction
は、ユーザによって選択されると放射される信号triggeredを有する。この信号はslot
に接続できます。これはpart of an existing QObject
or custom-definedです。
作成し、slot
でオブジェクトに、次の例では、役に立つことがあります。ここでは
class MyClass : QObject{
Q_OBJECT //<---macro which flags the class for the Meta-Object Compiler(moc) tool
public:
MyClass(QObject* parent=):QObject(parent){}
public slots: //<--- also for the moc tool to handle
void mySlot(){
//custom behavior
QString fileName = QFileDialog::getOpenFileName(/*args*/);
}
};
は、
QFileDialog classは、ファイルの名前を取得するには(
static
メソッドを介して)使用されています。ファイルタイプやその他の便利なプロパティのフィルタを設定することができます。ダイアログは、使用しているオペレーティングシステムのネイティブファイルダイアログを使用します。
connect(QObject* sender, SIGNAL, QObject* receiver, SLOT)
メソッドを使用して、QAction::triggered
信号を有効化するslot
に接続します。
実際の実装はもちろんあなた次第ですが、これがあなたを始めることができれば幸いです。
これは広い質問です。シグナル/スロットおよび標準ダイアログに関する頭の良いスタートについては、このQtサンプルをご覧ください。http://qt-project.org/doc/qt-4.8/dialogs-standarddialogs.html – Koying