私はLinuxにQtアプリケーションを持っています。カスタムキーボードショートカットのプログラミング方法
私はカスタムキーボードショートカットをプログラムしたいのですが、このようななどCTRL - その後、プログラムを終了し、サブルーチンが呼び出されますQ。
どうすればいいですか?
私はLinuxにQtアプリケーションを持っています。カスタムキーボードショートカットのプログラミング方法
私はカスタムキーボードショートカットをプログラムしたいのですが、このようななどCTRL - その後、プログラムを終了し、サブルーチンが呼び出されますQ。
どうすればいいですか?
はこれを試してみてください。これにより、ショートカットにアクセスするためのポインタを使ってクラスを汚染することを避けることができます。後でアクセスする場合は、ショートカットへのポインタを追加することができます。ショートカットは親アプリケーションであるため、アプリケーションが終了すると削除されます。自動的に接続を行います。手動で行う必要はありません。
WindowsではデフォルトのCtrl + Qシーケンスはありませんが、LinuxとMacOSではデフォルトのCtrl + Qシーケンスはありません。
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()));
:
これはファイルメニューを作成し、信号とスロット間のアクションと接続を終了するサンプルです。現代の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);
:
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>
することを忘れないでください。
これはどのように行うのですか?私はまだQTのノブで、私はそのウェブページからそれを理解することに問題があります。主に、メニューやツールバーにアクションを追加する方法について説明します。しかし、私はメニューやツールバーを持っていません。私は、ショートカットが私のアプリのメインウィンドウ(唯一のウィンドウ)で動作するようにしたい。 –
@JB_User確かに、私は私の答えを編集しました。 – Paul