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>
Это так же позволит избежать ошибки компиляции, но время сборки будет быстрее и можно избежать циклических зависимостей.