x61*_*610 6 c++ macos qt keyboard-shortcuts
我正在尝试绑定Qt::META
+ Qt::Key_Tab
快捷方式QTabWidget
切换标签(就像它在chrome或许多其他应用程序中工作).我已尝试在谷歌中找到的每一个解决方案,但这种快捷方式组合不起作用.
我试过了:
Qt::Key_Control
+ Qt::Key_Tab
,Qt::Key_Meta
+ Qt::Key_Tab
,QKeySequence
(Qt::Key_Meta
,Qt::Key_Tab
),QKeySequence
(Qt::META
,Qt::Key_Tab
)等.QShortcut
QAction
QWidget::event
QWidget::eventFilter
来捕获密钥installEventFilter
keyPressed
等等..QWidget::event
/ QWidget::eventFilter
捕获Shift+ Tab,Alt+ Tab,但不捕获Ctrl(META)+ Tab.当我按下Ctrl我看到我的qDebug
输出时,当我按下Ctrl + Tab时没有任何反应.
在OSX的QT中,有人可以解释一下我的错误和特殊的关键组合吗?
无论什么小部件,我创建了干净的GUI项目,其中没有其他小部件 - 仍然是相同的.
一些信息:
顺便说一句,在Qt Creator中,我也无法设置Ctrl+ Tab快捷方式,这真的很荒谬.
注意:它在Windows上运行良好,在OSX上不起作用!
我感谢任何帮助.
QAction的简单代码:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QAction *pAction = new QAction(this);
QKeySequence keySequence = Qt::META + Qt::Key_Tab; // Not working
// or
QKeySequence keySequence = Qt::ALT + Qt::Key_Tab; // Works Alt+Tab
// or
QKeySequence keySequence = QKeySequence(Qt::Key_Meta, Qt::Key_Tab); // Not working
// or
QKeySequence keySequence = QKeySequence(Qt::META, Qt::Key_Tab); // Not working
pAction->setShortcut(keySequence);
connect(pAction, SIGNAL(triggered()), this, SLOT(shortcut_NextTab()));
addAction(pAction);
}
Run Code Online (Sandbox Code Playgroud)
和插槽功能:
void MainWindow::shortcut_NextTab()
{
qDebug() << "LOL";
}
Run Code Online (Sandbox Code Playgroud)
LOL
当按下Ctrl+ 时,期望在应用程序输出中看到Tab.
dje*_*lin -1
在这一行中:
QKeySequence keySequence = Qt::Key_Meta + Qt::Key_Tab;
Run Code Online (Sandbox Code Playgroud)
您只是将整数相加。根据QT 文档:
QKeySequence::QKeySequence ( int k1, int k2 = 0, int k3 = 0, int k4 = 0 )
构造一个最多包含 4 个键 k1、k2、k3 和 k4 的键序列。键码列在 Qt::Key 中,并且可以与修饰符(请参阅 Qt::Modifier)结合使用,例如 Qt::SHIFT、Qt::CTRL、Qt::ALT 或 Qt::META。
意义:
QKeySequence
,而不仅仅是将两个整数加在一起(这就是你正在做的)并使用单参数构造函数。QT::Modifier
,而不是Qt::Key_*
。 归档时间: |
|
查看次数: |
1079 次 |
最近记录: |