naturEarth

static方法,如下:

QDesktopWidget *QApplication::desktop()

应用程序的控制流和主要设置,其派生关系如下:

QObject

,否则会有

错误“QWidget: Cannot create a QWidget without QApplication”。

int main(int argc, char *argv[]){QApplication app(argc, argv);// …return app.exec();}

QDesktopWidget类提供了访问多屏幕信息的接口,有时候我们的系统由多个屏幕组成,这时我们可以把这些屏幕当作多个桌面来对待,也可以看成是一个大的虚拟桌面。

>>QDesktopWidget::screenGeometry()用来获得屏幕大小,有三个重载函数:

const QRect QDesktopWidget::screenGeometry(int screen = -1) const

const QRect QDesktopWidget::screenGeometry(const QWidget *widget) const

const QRect QDesktopWidget::screenGeometry(const QPoint &p) const

的基础上去掉桌面菜单栏等占据的区域,有三个重载函数:

const QRect QDesktopWidget::availableGeometry(int screen = -1) const

const QRect QDesktopWidget::availableGeometry(const QWidget *widget) const

const QRect QDesktopWidget::availableGeometry(const QPoint &p) const

也可以获得屏幕尺寸,但是有多个屏幕时,这两个接口就用非所用了,,因为返回的是整个大的虚拟桌面的大小。

QML文件中也就可以访问了。

#include <QApplication>#include <QQuickView>#include <QtQml>#include <QDesktopWidget>#include <QRect>#include <iostream>int main(int argc, char *argv[]){QApplication app(argc, argv);int virtualWidth = 0;int virtualHeight = 0;int availableWidth = 0;int availableHeight = 0;int screenWidth = 0;int screenHeight = 0;QDesktopWidget *deskWgt = QApplication::desktop();if (deskWgt) {virtualWidth = deskWgt->width();virtualHeight = deskWgt->height();std::cout << "virtual width:" << virtualWidth << ",height:" << virtualHeight << std::endl;QRect availableRect = deskWgt->availableGeometry();availableWidth = availableRect.width();availableHeight = availableRect.height();std::cout << "available width:" <<availableWidth << ",height:" << availableHeight << std::endl;QRect screenRect = deskWgt->screenGeometry();screenWidth = screenRect.width();screenHeight = screenRect.height();std::cout << "screen width:" <<screenWidth << ",height:" << screenHeight << std::endl;}QQuickView view;view.setSource(QUrl(QStringLiteral("qrc:///main.qml")));if (view.rootContext()) {view.rootContext()->setContextProperty("virtualWidth", virtualWidth);view.rootContext()->setContextProperty("virtualHeight", virtualHeight);view.rootContext()->setContextProperty("availableWidth", availableWidth);view.rootContext()->setContextProperty("availableHeight", availableHeight);view.rootContext()->setContextProperty("screenWidth", screenWidth);view.rootContext()->setContextProperty("screenHeight", screenHeight);}view.show();return app.exec();}

总结失败的原因能够让人越来越谨慎。

naturEarth

相关文章:

你感兴趣的文章:

标签云: