Я пытаюсь связать Qt::META
+ Qt::Key_Tab
ярлык в QTabWidget
переключать вкладки (как это работает в Chrome или многих других приложениях).
Я пробовал каждое решение, найденное в Google, но эта комбинация клавиш не работает.
Я пытался:
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
уловы сдвиг+табуляция, Alt+табуляция, но нет Ctrl(МЕТА) +табуляция. Когда я нажимаю Ctrl Я вижу свой qDebug
вывод, когда я нажимаю Ctrl + Tab ничего не происходит.
Может кто-нибудь объяснить мне, что не так и что особенного в этой конкретной комбинации клавиш в QT на OSX?
Не имеет значения, какой виджет, я создал чистый проект GUI без других виджетов в нем — все тот же.
Некоторая информация:
КСТАТИ, В Qt Creator я не могу установить Ctrl+табуляция ярлык тоже, это действительно смешно.
Замечания: Отлично работает на 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);
}
И функция слота:
void MainWindow::shortcut_NextTab()
{
qDebug() << "LOL";
}
Ожидая увидеть LOL
в выводе приложения, при нажатии Ctrl+табуляция.
Это похоже на ошибку в Qt на Какао. Увидеть QTBUG-8596 а также QTBUG-12232. Первый отчет об ошибке имеет комментарий это говорит о том, что это работает, если вы добавите QAction в меню. Я столкнулся с той же проблемой, что и вы, и это решение помогло мне.
В этой строке:
QKeySequence keySequence = Qt::Key_Meta + Qt::Key_Tab;
Вы просто добавляете целые числа. в Документация 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_*
,