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 上可用的屏幕尺寸的主要内容,如果未能解决你的问题,请参考以下文章