programado per QtQuick2
af Kirilo81, 19. nov. 2015
Meddelelser: 13
Sprog: Esperanto
Kirilo81 (Vise profilen) 19. nov. 2015 12.33.45
Mi ne estas programisto, eĉ ne programaĉisto, sed esperas, ke mi allogis vin per la titolo.
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.0Nun estas mia problemo, ke mi volas resp. devas aldoni du instrukciojn:
Image {
height: 250; width: 300
fillMode: Image.PreserveAspectFit
source: "/vojprefikso/al/mia/bildo.jpg"
}
-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 (Vise profilen) 30. nov. 2015 11.41.41
sergejm (Vise profilen) 30. nov. 2015 13.21.22
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 (Vise profilen) 30. nov. 2015 13.46.23
sergejm (Vise profilen) 1. dec. 2015 07.39.17
import QtQuick 2.0En timer.onTriggered vi ankaŭ povas ŝanĝi flipable.front.source kaj flipable.back.source por ke ĉiufoje montri novan bildon.
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 }
}
}
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 (Vise profilen) 2. dec. 2015 07.48.01
import QtQuick 2.0(Mi havas malnovan Qt, do mi ne povas kontroli kiel ĉi tio laboras)
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
}
http://doc.qt.io/qt-5/qml-qt-labs-folderlistmodel-...
Kirilo81 (Vise profilen) 2. dec. 2015 11.46.12
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 (Vise profilen) 2. dec. 2015 12.15.39
import QtQuick 2.01. grandeco de ListView nun estas la sama kiel la bildo - nur unu bildo estas videbla.
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)
}
}
}
2. en onTriggered ni rulumas la liston al la venonta bildo. Post la lasta bildo ni revenas al la nula.
Kirilo81 (Vise profilen) 2. dec. 2015 12.55.46
sergejm (Vise profilen) 2. dec. 2015 13.32.42
Kaj ne en plasmoido, sed en qmlviewer.