Я использую Ubuntu SDK для разработки приложения QML, которое работает как на настольном компьютере, так и на мобильных устройствах. В зависимости от того, где он работает на настольном компьютере или на устройстве, определенное поведение должно отличаться.
Каков рекомендуемый способ программного определения, запущено ли приложение на рабочем столе или на мобильном устройстве?
На данный момент единственный способ обнаружить это - проверить ширину и высоту приложения. Например, предполагая, что ширина телефона xxheight составляет 40x71 GU (портрет по умолчанию), планшет - 160x100 GU (пейзаж по умолчанию), все, что выше 160x100 GU, может рассматриваться как рабочий стол.
Существуют планы предоставления флагов, например, для определения того, подключена ли HW-клавиатура, указывающее устройство, ASO, однако эти флаги не следует использовать отдельно для определения форм-фактора рабочего стола, поскольку вы можете подключить клавиатуру мыши / HW к телефону. / планшет через блютус.
@zsombi так что-то вроде этого?
MainView {
id: mainView
objectName: "mainView"
applicationName: "myapp"
automaticOrientation: true
width: units.gu(40)
height: units.gu(71)
//detect whether an app is running on a mobile device or on the desktop, base on screen-size
property bool desktop: false;
function sizeChanged()
{
if(mainView.width > units.gu(160) && mainView.height < units.gu(100))
desktop = true;
else
desktop = false;
}
onWidthChanged: {
sizeChanged();
}
onHeightChanged: {
sizeChanged();
}
}
Тогда вы можете сделать
if(desktop)
//Desktop
else
//mobil