2016-03-16 75 views
2

我在我的代碼中有一個QAction,它鏈接到一個工具欄按鈕和一個快捷方式。此QAction用於設置焦點並顯示過濾器欄小部件。 QAction在被快捷方式調用時需要特殊事件處理,以便在我的過濾器欄小部件上設置焦點。而如果使用工具欄按鈕觸發,則過濾器欄的可見性將被切換。如何判斷我的QAction是否被快捷方式觸發?

我的QAction是:

QAction* showFilterBar = actionCollection()->addAction("show_filter_bar"); 
showFilterBar->setText(i18nc("@action:inmenu Tools", "Filter")); 
showFilterBar->setToolTip(i18nc("@info", "Toggle the Filter Bar")); 
showFilterBar->setIcon(QIcon::fromTheme("view-filter")); 
showFilterBar->setCheckable(true); 
actionCollection()->setDefaultShortcut(showFilterBar, Qt::CTRL | Qt::Key_I); 
connect(showFilterBar, &QAction::triggered, this, &DolphinMainWindow::toggleFilterBar); 

而對於我toggleFilterBar函數的代碼是:

void DolphinMainWindow::toggleFilterBar() 
{ 
    m_activeViewContainer->setFilterBarVisible(!m_activeViewContainer->filterBarHasFocus()); 
    updateViewActions(); 
} 

因此,我的問題是,我需要弄清楚如果的QAction是按調用工具欄按鈕或者它是否被快捷方式調用。我怎樣才能找到這個?

回答

1

爲QAction快捷鍵的快捷鍵創建一個單獨的插槽(它將是唯一的)。例如:

new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_I), 
        this, SLOT(slotshowFilterBarShortCut())); 

所以快捷鍵觸發將被稱爲separately.normal動作觸發將在不同的時隙被調用。

相關問題