2013-01-15 52 views
0

這是我的類聲明:快捷鍵不被觸發

class Browser : public QWidget {  
    Q_OBJECT 
    public: 
     Browser(QWidget *parent = 0); 
     QStringList loadSettings(QString settings_file); 
    private slots: 
     void toggleFullscreen();    
    private:  
     void createActions(); 
     QAction *aToggleFullscreen;    
}; 

而且relevand定義:

void Browser::toggleFullscreen() { 
    out << "fullscreen!" << endl; 
} 
void Browser::createActions() { 
    aToggleFullscreen = new QAction(this); 
    aToggleFullscreen->setShortcut(tr("F11"));  
    connect(aToggleFullscreen, SIGNAL(triggered()), this, SLOT(toggleFullscreen()));  
} 

我打電話從Browser::BrowsercreateActions()

我沒有任何運行時警告,該插槽不存在等,但仍然沒有觸發如果我擊中F11

我也試過:

aToggleFullscreen->setShortcut(QString("F11")); 

這是什麼錯我的代碼?

回答

1

您忘了實際將您的操作添加到瀏覽器,因此它永遠不會被觸發。這應該工作:

void Browser::createActions() { 
    aToggleFullscreen = new QAction(this); 
    aToggleFullscreen->setShortcut(tr("F11"));  
    connect(aToggleFullscreen, SIGNAL(triggered()), this, SLOT(toggleFullscreen())); 
    addAction(aToggleFullscreen);  
} 
+0

哦,爲什麼我總是被這些愚蠢的東西卡住? :) – jviotti