2017-09-06 65 views
1
添加自定義ApplicationShortcut

我有以下代碼:如何在Qt的

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    mUi(new Ui::MainWindow) 
{ 
    mUi->setupUi(this); 
    this->setFixedSize(this->width(), this->height()); 

    StyleUi(); 

    auto closeAct = new QAction(this); 
    closeAct->setShortcut(QKeySequence("Ctrl+O")); 
    connect(closeAct, SIGNAL(activated()), this, SLOT(close())); 
    closeAct->setShortcutContext(Qt::ApplicationShortcut); 
    addAction(closeAct); 
} 

最後5行定義從序列按Ctrl + O創建一個快捷方式的QAction,連接的QAction的插槽關閉()。我在這裏找到了這個例子在stackoverflow和其他幾個文檔站點描述了我想要這樣做。但是,我沒有得到這個地方。當我按Ctrl + O時,我的程序不會關閉。有關我在哪裏做錯事的任何建議?

+0

https://stackoverflow.com/a/45730106/5068056 – aghilpro

+0

如果有幫助,您能否接受我的回答? – aghilpro

+0

@aghilpro我用你在答案中提供的代碼,但它不起作用:S – Paludan

回答

1

您可以使用QKeySequence的多參數構造函數來創建它。

這樣的:

QShortcut *shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_O), this); 
shortcut->setContext(Qt::ApplicationShortcut); 

並嘗試這讓QShortcut信號激活:

connect(shortcut, &QShortcut::activated, this, &MainApp::activeShortcut); 

void MainApp::activeShortcut() 
{ 
    this->close(); 
} 

這是你的問題的示例項目上github download here.