Qt 3 中 Linux 上可用的屏幕尺寸

Posted

技术标签:

【中文标题】Qt 3 中 Linux 上可用的屏幕尺寸【英文标题】:Available screen size on Linux in Qt 3 【发布时间】:2012-04-05 06:03:30 【问题描述】:
QDesktopWidget * screen = QApplication::desktop();
QRect size = screen->availableGeometry(this);

documentation 说,

可用的内容将是 screenGeometry() 的子区域,具体取决于平台决定可用的内容(例如,不包括 Mac OS X 上的 Dock 和菜单栏,或 Windows 上的任务栏)。

我想知道的是如何在 Linux 上获得可用的屏幕几何图形(无面板)?我在 Linux 上尝试了上面的代码,但它返回物理屏幕大小。

【问题讨论】:

【参考方案1】:

This question 表示调用QApplication::desktop()->size() 将为您提供Linux 上不带面板的桌面大小。

// called from inside the MainWindow constructor
QDesktopWidget* dt(QApplication::desktop());
this->resize(dt->size()); 

此代码正确调整主窗口的大小以填充 Ubuntu 10.04 和 Qt 4.8 上顶部和底部栏之间的空间。我在 Qt3 和 Qt 4.8 之间的文档中看不到任何差异,这表明这些函数的行为已经改变。

【讨论】:

帮我帮你:定义“不起作用”。我刚刚在 Ubuntu 10.04 上使用 Qt 4.8 进行了尝试,它调整了窗口大小,以便在不重叠顶部或底部面板的情况下填充可用的最大空间。如果您想要与此不同的东西,请返回并更新您的问题,以便准确地询问您想要什么,不要含糊其辞。 好的。我正在使用 Qt 3(见标题)。不管怎样,试试这个。 resize(dt->size().width()-5, dt->size().height()-5); 这不会改变你上面得到的结果。 注意:我的问题是,当我增加停靠区的大小时,主窗口变得比屏幕大小更宽。我想阻止它。我正在尝试通过实现eventFilter() 方法。但我没有成功...... resize(dt->size().width()-5, dt->size().height()-5); 确实有效,但窗口管理器将其限制在可用空间中。但听起来这整个问题是无关紧要的:因为你的实际问题是如何正确实现停靠,所以它不会扩大主窗口的宽度。【参考方案2】:

对于大多数情况availableGeometry() 有效。我正在使用虚拟屏幕。有时它不能正常工作。

【讨论】:

以上是关于Qt 3 中 Linux 上可用的屏幕尺寸的主要内容,如果未能解决你的问题,请参考以下文章

获取可用的屏幕尺寸

iOS Storyboard,布局在 4.0 英寸屏幕尺寸和 3.5 英寸屏幕尺寸之间笨拙地转换

如何在 xcode4.3 中获取和修改显示屏幕尺寸

Qt 获取屏幕 和窗口大小

QGLWidget 最大尺寸

android屏幕适配做哪几个尺寸