2013-07-13 8 views
17

मेरे पास लिनक्स पर एक क्यूटी एप्लीकेशन है।प्रोग्राम कैसे करें कस्टम कीबोर्ड शॉर्टकट्स

मैं कस्टम कीबोर्ड शॉर्टकट कार्यक्रम करना चाहते हैं इस तरह के के रूप में CTRL - क्यू जो फिर एक सबरूटीन जो कार्यक्रम इस्तीफा कॉल करेंगे।

मैं यह कैसे कर सकता हूं?

उत्तर

29

इस प्रयास करें:

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

आप इसे अपने फार्म की contructor में बना सकते हैं। यह शॉर्टकट तक पहुंचने के लिए आपकी कक्षा को पॉइंटर के साथ प्रदूषित करने से बचने की अनुमति देता है। यदि आप इसे बाद में एक्सेस करना चाहते हैं तो भी आप शॉर्टकट में पॉइंटर जोड़ना चाहेंगे। एप्लिकेशन बाहर निकलने पर शॉर्टकट हटा दिया जाएगा, क्योंकि यह इसके लिए अभिभावक है। यह स्वचालित रूप से कनेक्शन करता है, आपको इसे मैन्युअल रूप से करने की ज़रूरत नहीं है।

यह भी ध्यान रखें कि विंडोज़ पर कोई डिफ़ॉल्ट Ctrl + Q अनुक्रम नहीं है, लेकिन लिनक्स और मैकोज़ पर एक है।

27

चूंकि CTRL-Q में मेनू आइटम या टूलबार प्रविष्टि हो सकती है, मुझे लगता है कि आप QAction ढूंढ रहे हैं। http://doc.qt.digia.com/4.6/qaction.html#shortcut-prop

ले:

इस देखें

QAction काम पर का उदाहरण:

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

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

बस एक नया क्यूटी जीयूआई परियोजना बनाने (मैं QtCreator प्रयोग किया जाता) और पर वह कोड जोड़ें मुख्य खिड़की के निर्माता और इसे उम्मीद के अनुसार काम करना चाहिए।

कृपया ध्यान दें कि स्मृति को मुक्त करने की कोई आवश्यकता नहीं है क्योंकि क्यूटी फ्रेमवर्क उस पर ध्यान रखेगा जब ऐप बंद हो जाएगा।

+0

वहाँ इसे कैसे करना का एक उदाहरण है मैं अभी भी क्यूटी के साथ एक नोब हूं और मुझे उस वेब पेज से इसे समझने में परेशानी हो रही है। वे ज्यादातर मेनू या टूलबार में कोई कार्रवाई जोड़ने के बारे में बात करते हैं। लेकिन मेरे पास मेन्यू या टूलबार नहीं हैं। मैं शॉर्टकट को अपने ऐप में मुख्य विंडो (एकमात्र विंडो) में काम करना चाहता हूं। –

+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

आधुनिक क्यूटी के लिए (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

संबंधित मुद्दे