可以通过实现QWidget的keyPressEvent和mouseDoubleClickEvent方法来实现双击widget全屏显示和esc键退出全屏的功能。
具体代码如下:
#include <QtWidgets>
class MyWidget : public QWidget {
public:
explicit MyWidget(QWidget *parent = nullptr) : QWidget(parent) {
setWindowTitle("My Widget");
}
protected:
void keyPressEvent(QKeyEvent *event) override {
if (event->key() == Qt::Key_Escape) {
showNormal();
}
}
void mouseDoubleClickEvent(QMouseEvent *event) override {
if (event->button() == Qt::LeftButton) {
if (isFullScreen()) {
showNormal();
} else {
showFullScreen();
}
}
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MyWidget widget;
widget.resize(300, 200);
widget.show();
return app.exec();
}
在上述代码中,我们重载了QWidget的keyPressEvent和mouseDoubleClickEvent方法。当按下esc键时,调用showNormal方法退出全屏;当双击左键时,若当前窗口未全屏,则调用showFullScreen方法全屏显示,否则调用showNormal方法退出全屏。