Al la enhavo

programado per QtQuick2

de Kirilo81, 2015-novembro-19

Mesaĝoj: 13

Lingvo: Esperanto

Kirilo81 (Montri la profilon) 2015-novembro-19 12:33:45

Saluton programistoj!
Mi ne estas programisto, eĉ ne programaĉisto, sed esperas, ke mi allogis vin per la titolo. okulumo.gif

Mi havas jenan problemon:
Mi volas transiri de KDE4 al KDE5, sed mankas eta detalo, kiu tamen estas grava por mi: En Plasma4 estas plasmoido por montri bildojn (picture frame plasmoid), kiun mi uzas por montri dum la laboro la bildojn de miaj infanoj. Ĝi mankas en Plasma5 (oni ne povas la malnovan instali tie), kaj ĉar ĝi ja ne estas vere grava, ĝis nun neniu faris la laboron ĝin reskribi.
Por ke mi havu almenaŭ provizoraĵon, mi provis reuzi kodon de ekzempla plasmoido, kiu montras unu bildon (jen jam kun aldonoj de mi; kiel mi diris, mi ne povas programi, sed foje jam sukcesis al mi modifi ekzistantan kodon):
import QtQuick 2.0

Image {
height: 250; width: 300
fillMode: Image.PreserveAspectFit
source: "/vojprefikso/al/mia/bildo.jpg"

}
Nun estas mia problemo, ke mi volas resp. devas aldoni du instrukciojn:
-La plasmoido montru ne nur unu bildon, sed ĉiujn bildojn de la dosierujo sinsekve.
-La plasmoido devas scii, kiom ofte ĝi ŝanĝu la bildojn.

Mi vane serĉis en la Reto informojn pri tio, povas esti, ke ne ekzistas simpla solvo, sed ke oni devas skribi aldonaĵojn por provizi datumojn ks. - tiuokaze mi ja devus kapitulaci.

Kirilo81 (Montri la profilon) 2015-novembro-30 11:41:41

Mi revenigas la temon al la komenco, en la malgranda espero, ke ĝi videblos ioman tempon inter la viglaj ludantoj.

sergejm (Montri la profilon) 2015-novembro-30 13:21:22

Vi povas unuigi kelkajn bildojn en Row aŭ Column kaj poste uzi PropertyAnimation por movi unuigitan bildon.
Kompatinde, mi ankoraŭ ne uzis QtQuick kaj ne povas doni laborantan ekzemplon.

legu http://doc.qt.io/qt-5/qmltypes.html

Sed eble necesos QtQuick 2.5 aŭ eĉ pli alta.

Kirilo81 (Montri la profilon) 2015-novembro-30 13:46:23

Multan dankon, mi provos tuj, kiam mi denove havos funkciantan komputilon kun Plasma5 (bedaŭrinde tiu, sur kiu mi havis ĝin, antaŭhieraŭ paneis malgajo.gif)!

sergejm (Montri la profilon) 2015-decembro-01 07:39:17

import QtQuick 2.0

Flipable {
id: flipable
width: 240
height: 240

property int angle: 0
property bool flipped: false

front: Image { source: "image1.png" }
back: Image { source: "image2.png" }

transform: Rotation {
origin.x: flipable.width/2; origin.y: flipable.height/2
axis.x: 0; axis.y: 1; axis.z: 0 // rotate around y-axis
angle: flipable.angle
}

states: State {
name: "back"
PropertyChanges { target: flipable; angle: 180 }
when: flipable.flipped
}

transitions: Transition {
NumberAnimation { properties: "angle"; duration: 1000 }
}

Timer {
id: timer
interval: 5000; running: true; repeat: true
onTriggered: { flipable.flipped = !flipable.flipped }
}

}
En timer.onTriggered vi ankaŭ povas ŝanĝi flipable.front.source kaj flipable.back.source por ke ĉiufoje montri novan bildon.
timer.interval estas tempo, post kiu nova bildo estas montrata.

Ekzamplo de vidigilo de fotaĵoj kun klarigoj:
http://doc.qt.io/qt-5/qtquick-demos-photoviewer-ex...

sergejm (Montri la profilon) 2015-decembro-02 07:48:01

Montri ĉiujn bildojn en via dosierujo per FolderListModel en ListView :
import QtQuick 2.0
import Qt.labs.folderlistmodel 2.1

ListView {
width: 300; height: 500

FolderListModel {
id: folderModel
folder: "file:///vojo/al/dosierujo/kun/viaj/bildoj"
nameFilters: ["*.png", ".jpg"]
showDirs: false
}

Component {
id: fileDelegate

Image {
height: 250; width: 300
fillMode: Image.PreserveAspectFit
source: filePath
}
}

model: folderModel
delegate: fileDelegate
}
(Mi havas malnovan Qt, do mi ne povas kontroli kiel ĉi tio laboras)
http://doc.qt.io/qt-5/qml-qt-labs-folderlistmodel-...

Kirilo81 (Montri la profilon) 2015-decembro-02 11:46:12

Multan dankon, sergejm, pro la du ekzemploj!

Kun la unua mi ne multe sukcesis, miaj provoj ie enmeti fillMode: Image.PreserveAspectFit por konvenigi la bildojn nur rezultis malplenan plasmoidon, krome mi entute ne komprenis kiel ŝanĝi al aliaj bildoj.

La dua principe funkcias, la bildoj aperas kun konvenigita grando laŭvice, kiam mi rulumas, sed kun tio estas du problemoj:
-Mi ne volas rulumi, ili aperu de si mem; mi provis enmeti timer el la unua ekzemplo, sed ĝi ne efikis, precipe mi ne scias, kio estu ontriggered en la dua okazo.
-Rulumate, la bildoj aperas jam malsupre de la Plasmoido sur la labortablo kaj poste malaperas supre de ĝi, do ili ja malgrandiĝas ĝuste, sed tamen ne restas en la limoj de la elemento.

sergejm (Montri la profilon) 2015-decembro-02 12:15:39

Se vi ne necesas animacion:
import QtQuick 2.0
import Qt.labs.folderlistmodel 2.1

ListView {
id: list
width: 300; height: 250

FolderListModel {
id: folderModel
folder: "."
nameFilters: ["*.png", ".jpg"]
showDirs: false
}

Component {
id: fileDelegate

Image {
height: 250; width: 300
fillMode: Image.PreserveAspectFit
source: filePath
}
}

model: folderModel
delegate: fileDelegate

property int index: 0;
property alias count: folderModel.count;

Timer {
interval: 5000; running: true; repeat: true
onTriggered: {
index++;
if (index == count)
index = 0;
list.positionViewAtIndex(index, ListView.Visible)
}
}
}
1. grandeco de ListView nun estas la sama kiel la bildo - nur unu bildo estas videbla.
2. en onTriggered ni rulumas la liston al la venonta bildo. Post la lasta bildo ni revenas al la nula.

Kirilo81 (Montri la profilon) 2015-decembro-02 12:55:46

Bonege, nun la limoj estas respektataj kaj la ŝanĝo okazas aŭtomate (animacio vere estas nebezona), sed estas strange, post al unua bildo aperas ĉiam po du ĉe ĉiu ŝanĝo, unu en la kadro, unu malsupre?! Eble kaŭzas tion iu ĝeneralaj agordoj, en la kodo ja nenio tia enestas.

sergejm (Montri la profilon) 2015-decembro-02 13:32:42

Mi provis la kodon, sed en Qt 4.7 kaj kiel bildoj uzis aron da 32x32 iconoj - ĉio estis normale.
Kaj ne en plasmoido, sed en qmlviewer.

Reen al la supro