2013-07-13 2 views

答えて

29

はこれを試してみてください。これにより、ショートカットにアクセスするためのポインタを使ってクラスを汚染することを避けることができます。後でアクセスする場合は、ショートカットへのポインタを追加することができます。ショートカットは親アプリケーションであるため、アプリケーションが終了すると削除されます。自動的に接続を行います。手動で行う必要はありません。

WindowsではデフォルトのCtrl + Qシーケンスはありませんが、LinuxとMacOSではデフォルトのCtrl + Qシーケンスはありません。

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フレームワークがそれを処理するからです。あなたは、フォームのコンストラクタで、それを作成することができます

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

+0

これはどのように行うのですか?私はまだQTのノブで、私はそのウェブページからそれを理解することに問題があります。主に、メニューやツールバーにアクションを追加する方法について説明します。しかし、私はメニューやツールバーを持っていません。私は、ショートカットが私のアプリのメインウィンドウ(唯一のウィンドウ)で動作するようにしたい。 –

+0

@JB_User確かに、私は私の答えを編集しました。 – Paul

1

これはファイルメニューを作成し、信号とスロット間のアクションと接続を終了するサンプルです。現代のQt(今のところ5.9)のために

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

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

関連する問題