2013-07-13 14 views

Antwort

29

Versuchen Sie folgendes:

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

Sie es in der contructor des Formulars erstellen können. Auf diese Weise kann vermieden werden, dass Ihre Klasse mit einem Zeiger auf die Verknüpfung verschmutzt wird. Möglicherweise möchten Sie weiterhin einen Zeiger auf die Verknüpfung hinzufügen, wenn Sie später darauf zugreifen möchten. Die Verknüpfung wird gelöscht, wenn die Anwendung beendet wird, da sie an sie gebunden ist. Es macht automatisch die Verbindung, Sie müssen es nicht manuell tun.

Beachten Sie auch, dass es unter Windows keine standardmäßige Ctrl + Q-Sequenz gibt, aber eine unter Linux und MacOS.

27

Da CTRL-Q auch einen Menüeintrag oder einen Eintrag in der Symbolleiste haben kann, denke ich, dass Sie nach QAction suchen.

sehen: http://doc.qt.digia.com/4.6/qaction.html#shortcut-prop

LE:

Beispiel QAction bei der Arbeit:

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

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

Erstellen Sie einfach ein neues Qt GUI-Projekt (I verwendet QtCreator) und fügen Sie diesen Code in dem Hauptfenster Konstruktor und es sollte wie erwartet funktionieren.

Bitte beachten Sie, dass der Speicher nicht freigegeben werden muss, da das Qt-Framework dies beim Schließen der App übernimmt.

+0

Gibt es ein Beispiel dafür, wie es zu tun? Ich bin immer noch ein Anfänger mit QT und ich habe Probleme, es von dieser Webseite herauszufinden. Sie sprechen meist über das Hinzufügen einer Aktion zu einem Menü oder einer Symbolleiste. Aber ich habe keine Menüs oder Symbolleisten. Ich möchte, dass die Verknüpfung im Hauptfenster (dem einzigen Fenster) in meiner App funktioniert. –

+0

@JB_User Sicher, ich habe meine Antwort bearbeitet. – Paul

1

Dies ist ein Beispiel zum Erstellen eines Dateimenüs und Beenden der Aktion und Verbindung zwischen Signal und Steckplatz.

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

Für die moderne Qt (5.9 ab sofort):

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

Vergessen Sie nicht zu #include <QShortcut>.

Weitere Informationen: http://doc.qt.io/qt-5/qshortcut.html

Verwandte Themen