2013-07-13 119 views

回答

29

試試這個:

new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this, SLOT(close())); 

您可以在形式的構造器創建它。這樣可以避免使用訪問快捷方式的指針污染您的課程。如果您想稍後訪問它,您可能仍然需要添加指向該快捷方式的指針。當應用程序退出時,該快捷方式將被刪除,因爲它已成爲父項。它會自動進行連接,您不必手動完成。

另請注意,Windows上沒有默認的Ctrl + Q序列,但Linux和MacOS上有一個。

27

由於CTRL-Q可能有一個菜單項或工具欄條目,我認爲您正在尋找QAction

看到這個: http://doc.qt.digia.com/4.6/qaction.html#shortcut-prop

LE:

QAction在工作例:

QAction *foo = new QAction(this); 
foo->setShortcut(Qt::Key_Q | Qt::CTRL); 

connect(foo, SIGNAL(triggered()), this, SLOT(close())); 
this->addAction(foo); 

只需創建一個新的Qt GUI項目(我用QtCreator)和代碼添加到主窗口的構造函數,它應該按預期工作。

請注意,不需要釋放內存,因爲Qt框架將在應用程序關閉時處理該內存。

+0

有沒有一個如何做到這一點的例子?我仍然是QT的noob,我無法從該網頁中找出它。他們主要討論將操作添加到菜單或工具欄。但我沒有菜單或工具欄。我想要在我的應用程序中的主窗口(唯一窗口)中工作的快捷方式。 –

+0

@JB_User當然,我編輯了我的答案。 – Paul

1

這是一個示例,用於創建文件菜單並退出信號和插槽之間的操作和連接。

QMenu *fileMenu = new QMenu(trUtf8("&File")); 
QAction *actionExit = new QAction(tr("E&xit"));  
//set "ctrl+q shortcut for exit action 
actionExit->setShortcut(tr("CTRL+Q")); 
//connect triggered signal of actionExit to close slot 
connect(actionExit, SIGNAL(triggered()), this, SLOT(close())); 
//add actionExit into file menu 
fileMenu->addAction(actionExit); 
0

對於現代的Qt(5.9截至目前):

void MainWindow::bootStrap() 
{ 
    // create shortcut 
    QShortcut *shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this); 

    // connect its 'activated' signal to your function 'foo' 
    QObject::connect(shortcut, &QShortcut::activated, 
        this,  &MainWindow::foo); 
} 

// somewhere in the code, define the function 'foo' 
void MainWindow::foo() 
{ 
    qDebug() << "Ctrl+Q pressed."; 
} 

不要忘記#include <QShortcut>

更多信息:http://doc.qt.io/qt-5/qshortcut.html