gpt4 book ai didi

c++ - 如何在 QAbstractScrollArea 中接收 KeyPress 事件

转载 作者:行者123 更新时间:2023-11-30 03:19:09 25 4
gpt4 key购买 nike

在派生自 QAbstractScrollArea 的自定义小部件中,我感觉无法通过 QAbstractScrollArea::viewportEvent() 处理程序接收任何键盘事件:

#include <QtWidgets>

struct A: public QScrollArea {
bool viewportEvent(QEvent *e) {
qDebug() << e;
return QScrollArea::viewportEvent(e);
}
};

int main(int argc, char *argv[]) {
QApplication app(argc, argv);

A *a = new A;
a->viewport()->setFocus();
a->show();

return app.exec();
}

focusPolicy 和 friend 在 QScrollArea 及其 viewport() 上的各种实验也无济于事。奇怪的是,QScrollArea::event() 处理程序确实接收到按键事件。

我错过了什么?

最佳答案

您没有收到关键事件的原因是视口(viewport)从来没有焦点,因为 QAbstractScrollArea 总是将自己设置为视口(viewport)小部件的焦点代理。因此 a->viewport()->setFocus() 行实际上将焦点赋予了 a

为了接收按键事件,您需要覆盖 QAbstractScrollArea::keyPressEvent 而不是 viewportEvent

关于c++ - 如何在 QAbstractScrollArea 中接收 KeyPress 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53972718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com