QT QWidget窗体全屏时,全屏与最大化的区别时最大化有标题框全屏没有框,可以使用自带的函数:
showFullScreen();
复原时也有专门的函数:
showNormal();
如果我想在点击最大化按钮时,让窗体全屏。这个时候最好有线程的信号或者函数,通过它们来调用showFullScreen(),可惜现在没有这样的函数,只能靠以下方法:
void Widget::changeEvent(QEvent *event)
{
if (event->type() == QEvent::WindowStateChange)
{
if (this->windowState() == Qt::WindowMaximized)
{
this->showFullScreen();
}
}
QWidget::changeEvent(event);
}
QWidget有个专门的函数changeEvent来监测事件变化,当窗体状态变化时会发送QEvent::WindowStateChange,它的描述如下:
The window's state (minimized, maximized or full-screen) has changed (QWindowStateChangeEvent).
包括最大最小与全屏事件。
然后我们再判断窗体的状态是否是最大化,是的话就调用showFullScreen()全屏函数。
同理,检测最小化事件也可以采用这种方法。
复原时,按下ESC。复原代码:
void Widget::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_Escape)
{
showNormal();
}
QWidget::keyPressEvent(event);
}
未完待续...