Можно получить, используя QML Extension.
Создаем свой класс - наследник от QObject.
В нем определяем методы, которые будут возвращать нам габариты экрана и применяем к ним макрос Q_INVOKABLE, чтобы их можно было юзать из QML. Другой вариант - определить их слотами. Впринципе все.
Phone.h
#include "QObject"
class Phone : public QObject
{
Q_OBJECT
public:
Phone(QObject *parent = 0);
~Phone();
Q_INVOKABLE int screenWidth();
Q_INVOKABLE int screenHeight();
};
Phone.cpp
#include "Phone.h"
#include <QtGui/QApplication>
#include "QDesktopWidget"
Phone::Phone(QObject *parent) : QObject(parent)
{
}
int Phone::screenWidth()
{
return QApplication::desktop()->width();
}
int Phone::screenHeight()
{
return QApplication::desktop()->height();
}
Phone::~Phone()
{
}
main.cpp
#include <QtGui/QApplication>
#include "Phone.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
qmlRegisterType<Phone>("Phone",1,0,"Phone"); //регистрация созданного нами класса
QDeclarativeView *view = new QDeclarativeView();
view->setSource(QUrl::fromLocalFile("D:\\Qt\\2010.05\\qt\\QML\\extension.qml"));
view->show();
return a.exec();
}
extension.qml
import Qt 4.7
import Phone 1.0
Item {
width: obj.screenWidth(); height: obj.screenHeight()
Phone {
id: obj
}
}
может быть, можно и проще...
это так... навскидку