Naar de inhoud

programado per QtQuick2

door Kirilo81, 19 november 2015

Berichten: 13

Taal: Esperanto

Kirilo81 (Profiel tonen) 19 november 2015 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 (Profiel tonen) 30 november 2015 11:41:41

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

sergejm (Profiel tonen) 30 november 2015 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 (Profiel tonen) 30 november 2015 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 (Profiel tonen) 1 december 2015 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 (Profiel tonen) 2 december 2015 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 (Profiel tonen) 2 december 2015 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 (Profiel tonen) 2 december 2015 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 (Profiel tonen) 2 december 2015 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 (Profiel tonen) 2 december 2015 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.

Terug naar boven