QShortcut - как правильно объявить в виджете?

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

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

Я не уверен, что это сработает, даже если оно компилируется нормально, так как переменная является локальной в конструкторе. Итак, я пытаюсь объявить его как частную переменную для всего класса MyPage,

и получаю ошибки компиляции:

      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 ответ

Вы можете отсутствовать #includeиз MyPageзаголовок... Без него он не может повышать MyPage*к QWidget*. Проверьте, не пропало ли оно.

Другие вопросы по тегам