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;            
};

そして関連する定義:

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

から電話createActions()していBrowser::Browserます。

スロットが存在しないなどのランタイム警告はありませんが、を押しても何もトリガーされませんF11

私も試しました:

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

私のコードの何が問題になっていますか?

4

1 に答える 1

1

アクションをブラウザに実際に追加するのを忘れたため、トリガーされることはありません。これは機能するはずです:

void Browser::createActions() {
    aToggleFullscreen = new QAction(this);
    aToggleFullscreen->setShortcut(tr("F11"));    
    connect(aToggleFullscreen, SIGNAL(triggered()), this, SLOT(toggleFullscreen()));
    addAction(aToggleFullscreen);    
}
于 2013-01-15T16:30:29.947 に答える