带功能
QApplication::desktop()->screenCount();
QApplication::desktop()->screenGeometry();
我发现我的系统上存在多少屏幕以及它们所在的屏幕坐标。现在我想知道QWidget位于哪个屏幕上。我怎样才能做到这一点?我是否必须根据屏幕坐标检查QWidget的坐标,或者是否有更优雅的方式直接返回屏幕编号?
谢谢!
答案 0 :(得分:4)
我认为你应该寻找的功能就是这个
int QDesktopWidget::screenNumber(const QPoint &point) const
这是一个重载功能。 返回包含该点的屏幕索引,或距该点最短距离的屏幕。
由于我没有多个屏幕,你可以自己查看,QWidget :: pos()函数提供了QPoint编辑: 正如scopchanov在评论中所建议的那样,您也可以使用
QDesktopWidget::screenNumber(const QWidget *widget = Q_NULLPTR)
答案 1 :(得分:1)
QDesktopWidget
在较新的Qt版本(5.11 and above,not deprecated in 5.10)中已被弃用。
自Qt 5.10起,QGuiApplication::screenAt(QPoint)
代替了screenNumber(QPoint)
。
似乎没有screenNumber(QWidget*)
的直接替代品。但是,possible是通过QScreen
指针获取有关小部件所在屏幕的信息:
QScreen *screen = widget->window()->windowHandle()->screen();
qDebug() << screen->geometry()
<< screen->availableGeometry();
答案 2 :(得分:0)
除了Sillicomancers的答案,我还使用以下代码替换已描述的QDesktopWidget::availableGeometry(const QWidget *widget)
QScreen* pScreen = QGuiApplication::screenAt(widget->mapToGlobal({widget->width()/2,0}));
QRect availableScreenSize = pScreen->availableGeometry();
使用widget
顶部中间位置的屏幕。