QWidget在最大化时获取几何体

时间:2014-11-20 15:28:56

标签: qt qt4 qwidget qt4.8

QWidget提供了获取小部件几何的功能:

QWidget::frameGeometry()
QWidget::geometry()
QWidget::normalGeometry()

但是,当QWidget最大化时(QWidget :: isMaximized()返回true),几何函数提供的矩形具有相同的屏幕坐标(QRect :: x(),QRect :: y())当窗口大小正确时QWidget没有最大化时。有没有办法获得最大化窗口的屏幕坐标?请注意,使用(0,0)不正确,因为可能有一个面板位于屏幕顶部。

如果重要的话,我在CentOS 6.3上使用Qt 4.8。

1 个答案:

答案 0 :(得分:2)

解决方案来自查看QWidget的状态(isMaximized,isFullscreen),然后从QDesktopWidget获取几何

QWidget *widget = ...
QRect geom;
if (widget->isMaximized()) {
    geom = QApplication::desktop()->availableGeometry()
} else if (widget->isFullScreen()) {
    geom = QApplication::desktop()->screenGeometry()
} else {
    geom = widget->frameGeometry()
}