JB_*_*ser 24 qt keyboard-shortcuts
我在Linux上有一个Qt应用程序.
我想编写自定义键盘快捷键,如CTRL- Q然后调用退出程序的子程序.
我怎样才能做到这一点?
dte*_*ech 39
试试这个:
new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this, SLOT(close()));
Run Code Online (Sandbox Code Playgroud)
您可以在表单的构造函数中创建它.这样可以避免使用指针访问快捷方式来污染类.如果要稍后访问它,您可能仍希望添加指向快捷方式的指针.应用程序退出时将删除该快捷方式,因为它是它的父级.它会自动进行连接,您无需手动进行连接.
另请注意,Windows上没有默认的Ctrl + Q序列,但Linux和MacOS上有一个序列.
Pau*_*aul 30
由于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);
Run Code Online (Sandbox Code Playgroud)
只需创建一个新的Qt GUI项目(我使用QtCreator)并将该代码添加到主窗口的构造函数中,它应该按预期工作.
请注意,不需要释放内存,因为Qt框架将在应用程序关闭时处理.
对于现代Qt(截至目前为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.";
}
Run Code Online (Sandbox Code Playgroud)
别忘了#include <QShortcut>.
更多信息:http://doc.qt.io/qt-5/qshortcut.html
| 归档时间: |
|
| 查看次数: |
25821 次 |
| 最近记录: |