QShortcut- как обьявить переменную как член класса

Пытаюсь использовать QShortcut, и когда обьявляю его в конструкторе, все компилируется хорошо:

   QShortcut  *keyCtrlL;
    keyCtrlL = new QShortcut(this);
    keyCtrlL->setKey(Qt::CTRL + Qt::Key_L);
    connect(keyCtrlL, &QShortcut::activated, this, &MyPage::logicMenu);

Нобоюсь работать праивильно не будет - потому что переменная локальная в кострукторе. Выношу обьявление QShortcut *keyCtrlL; в файл заголовка .h как переменную класа, и получаю ошибку компиляции:

error: cannot initialize a parameter of type 'QWidget *' with an rvalue of type 'MyPage *'
    ui->setupUi(this);
                ^~~~
./qt/forms/ui_mypage.h:69:27: note: passing argument to parameter 'MyPage' here
    void setupUi(QWidget *MyPage)
                          ^
qt/mypage.cpp:153:20: error: no matching constructor for initialization of 'QShortcut'
    keyCtrlL = new QShortcut(this);

Хотя MyPage наследует от класса QWidget. Что значит ошибка и что я делаю не так?


Ответы (1 шт):

Автор решения: Mira

В файле заголовка не была включена библиотека

#include <QShortcut> 

Но так же в этом случае в файл заголовка лучше включить вместо include forward declaration:

class <QShortcut> 

Это так же позволит избежать ошибки компиляции, но время сборки будет быстрее и можно избежать циклических зависимостей.

→ Ссылка