[Interest] QPushButton shortcut works on Qt 4 but not 5

Elvis Stansvik elvstone at gmail.com
Sat May 7 15:36:08 CEST 2016


2016-05-07 15:27 GMT+02:00 Elvis Stansvik <elvstone at gmail.com>:
> Hi all,
>
> Maybe I'm doing something completely wrong, but on Qt 4.8.7, this
> works (pressing Ctrl+O prints "clicked"):
>
> test.cpp:
>
> #include <QApplication>
> #include <QMainWindow>
> #include <QPushButton>
> #include <QWidget>
> #include <QDebug>
>
> class MainWindow : public QMainWindow {
>     Q_OBJECT
>
> public:
>     MainWindow(QWidget *parent = 0) : QMainWindow(parent) {
>         QPushButton *button = new QPushButton("Click Me (Ctrl+O)");
>         button->setShortcut(QString("Ctrl+O"));

I tried passing QKeySequence(Qt::CTRL + Qt::Key_O) instead of
QString("Ctrl+O") with same result: works on Qt 4 but not on Qt 5.

Elvis

>         connect(button, SIGNAL(clicked()), this, SLOT(onClicked()));
>
>         setCentralWidget(button);
>     }
>
> public slots:
>     void onClicked() {
>         qDebug() << "clicked";
>     }
> };
>
> int main(int argc, char *argv[]) {
>     QApplication app(argc, argv);
>
>     MainWindow window;
>     window.show();
>
>     return app.exec();
> }
>
> #include "moc_test.cpp"
>
> but on Qt 5.6.0 it does not (nothing printed on Ctrl+O).
>
> test.pro for building:
>
> TEMPLATE = app
> greaterThan(QT_MAJOR_VERSION, 4):QT += widgets
> TARGET = test
> INCLUDEPATH += .
>
> # Input
> SOURCES += test.cpp
> HEADERS += test.cpp
>
> Any ideas what may be going wrong? My window manager (KWin) is not
> intercepting Ctrl+O (obviously). And besides, it doesn't seem to
> matter which shortcut I use.
>
> Thanks in advance,
> Elvis



More information about the Interest mailing list