2012-03-06 1137 views
0

我有一個使用QT4的C++項目。我已經使用QT Designer來構建我的表單,並且在頂部欄中我有"File -> Open Image"。 「Open Image」作品由QT設計師指定爲QObjectobjectName: actionOpen_Image如何從QT UI菜單欄(頂部菜單)開始打開文件(圖像)

我該如何從用戶按這個QObject,選擇一個圖像並獲取它的路徑,以便我可以加載它?

+1

這是一個廣泛的問題!你可以看看這個Qt示例,以獲取有關信號/插槽和標準對話框的開端:http://qt-project.org/doc/qt-4.8/dialogs-standarddialogs.html – Koying 2012-03-06 01:36:59

回答

3

一般來說,菜單項是QAction對象 - 如果你能讓你的對象成爲一個動作,那將是一個好的第一步。

QAction s有一個信號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

實際執行取決於你當然,希望這可以讓你開始。