Russian Qt Forum
Май 08, 2024, 14:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Как получить размер экрана в QML?  (Прочитано 7991 раз)
marbius
Гость
« : Октябрь 13, 2010, 11:16 »

Доброго времени суток.

Задумал "поизучать" QML и сразу столкнулся с вопросом, как можно получить в QML размеры экрана?

По задумке хочу, чтобы на desktop-приложении (QML) интерфейс занимал, ну скажем, 80% по ширине экрана и столько же по высоте.

Заранее благодарен.

« Последнее редактирование: Октябрь 14, 2010, 04:40 от µarbius » Записан
stump
Гость
« Ответ #1 : Октябрь 13, 2010, 20:36 »

Можно получить, используя 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
    }
}

может быть, можно и проще... Подмигивающий это так... навскидку  Смеющийся
« Последнее редактирование: Октябрь 13, 2010, 20:38 от stump » Записан
marbius
Гость
« Ответ #2 : Октябрь 14, 2010, 04:40 »

Можно получить, используя QML Extension.
...

Так и сделал. Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 20.