View Full Version : [Interfacce] Windows
ok, so che la domanda è super banale ma stendendo il mio primo progetto mi son posto un problema che prima non mi ero mai posto:
- per una GNU/linux ci sono le GTK, le QT, le wxWidgets, e forse un milione di altri framework da far girare sopra X con i quali disegnare l'interfaccia
- per MAC c'è solo Cocoa che è un framework nativo anche per iOS volendo
e qui arriva il domandone: per Windows?
esistono ovviamente un bel po' di versioni di Windows, per citare solo le più popolari attualmente si parla di ben 3 versioni, XP, Vista e 7, e tra XP e 7, almeno graficamente, ce ne passa un bel po' di acqua sotto i ponti vista l'introduzione di Aero.
quanti e quali framework per interfacce grafiche offrono le varie versioni di Windows nativamente?
un framework cross-platform tra i 3 sistemi ? ( GNU/linux, MAC OS e Windows )
tomminno
20-02-2011, 11:23
e qui arriva il domandone: per Windows?
Win32: le API del sistema operativo.
quanti e quali framework per interfacce grafiche offrono le varie versioni di Windows nativamente?
Nativamente solo Win32. Nel non nativo ci sono estensioni come le WPF del .NET.
un framework cross-platform tra i 3 sistemi ? ( GNU/linux, MAC OS e Windows )
Qt e wxWidgets,con ampia preferenza per le prime.
Ci sarebbero anche le Gtk, ma mi pare da masochisti usarle.
pabloski
20-02-2011, 12:10
un framework cross-platform tra i 3 sistemi ? ( GNU/linux, MAC OS e Windows )
qt è attualmente il migliore
le gtk pure esistono per i 3 sistemi operativi ma presentano un modello di programmazione tutt'altro che friendly
poi qt è un vero framework che gestisce dai buttoni fino ai thread e ai socket
se il cross-platform è vitale per te allora non hai scelta oltre a qt
vi ringrazio molto per le risposte, quindi Win32 gira sotto tutti i Windows nativamente? e WPF cosa offre in più?
pabloski
20-02-2011, 17:59
vi ringrazio molto per le risposte, quindi Win32 gira sotto tutti i Windows nativamente? e WPF cosa offre in più?
si, win32 è l'api ufficiale di windows e a parte aggiunte è compatibile col passato
wpf ha una lista abbastanza lunga di cose http://msdn.microsoft.com/en-us/library/ms754130.aspx
non pensare però di poter usare wpf con mono perchè non è implementato....in genere chi usa mono o utilizza le winforms o fa cose strane tipo mischiare gtk# e qyoto ( qt per mono ) con mono
se vuoi sviluppare per più sistemi operativi e non ami le rogne scegli qt....considera che qt non è c++, nel senso che lo puoi usare con moltissimi linguaggi diversi
si, win32 è l'api ufficiale di windows e a parte aggiunte è compatibile col passato
wpf ha una lista abbastanza lunga di cose http://msdn.microsoft.com/en-us/library/ms754130.aspx
non pensare però di poter usare wpf con mono perchè non è implementato....in genere chi usa mono o utilizza le winforms o fa cose strane tipo mischiare gtk# e qyoto ( qt per mono ) con mono
se vuoi sviluppare per più sistemi operativi e non ami le rogne scegli qt....considera che qt non è c++, nel senso che lo puoi usare con moltissimi linguaggi diversi
ma, per caso, le WPF sono supportate anche sotto Windows Phone? :fagiano:
mi sembra di capire che comunque con le WPF posso fare effetti grafici che con le Windows forms non posso fare, in sostanza le WPF usano anche aero e le DirectX ed hanno qualche API in più e saranno il futuro di Windows.
con le QT si posso fare effetti tipo una interfaccia simil-3d oppure effetti semplici come fade-in e fade-out?
edit: le QT hanno licenza LGPL, quindi dovrei rilasciare il codice ( di tutto il programma o solo dell'interfaccia? ) del software per usarle? se si, ok, le ho già depennate :D
tomminno
20-02-2011, 18:25
ma, per caso, le WPF sono supportate anche sotto Windows Phone? :fagiano:
WP7 supporta Silverlight che è una versione ridotta di WPF.
Piccola nota a parte: per sviluppare degnamente con WPF o Silverlight, Visual Studio non basta, ci vuole anche Blend. E mentre di VS esiste anche la versione gratuita, Blend è solo a pagamento.
mi sembra di capire che comunque con le WPF posso fare effetti grafici che con le Windows forms non posso fare, in sostanza le WPF usano anche aero e le DirectX ed hanno qualche API in più e saranno il futuro di Windows.
Le WPF utilizzano DirectX ma si appoggiano su una libreria nativa (milcore.dll) creata appositamente per supportarle.
Windows 7 ha introdotto Direct2d, che sarebbe la versione nativizzata di WPF, ma rappresentano 2 implementazioni distinte e al momento non ci sono piani (nè probabilmente mai ci saranno) per unificarle.
con le QT si posso fare effetti tipo una interfaccia simil-3d oppure effetti semplici come fade-in e fade-out?
Prova a cercare un pò di video riguardo a Qt Animation Framework oppure Qt Quick o Qt QML, così ti rendi conto velocemente di quello che possono fare.
Ah incidentalmente troverai video che mostrano Qt girare tranquillamente anche su Android e iOS. :D
pabloski
20-02-2011, 18:33
con le QT si posso fare effetti tipo una interfaccia simil-3d oppure effetti semplici come fade-in e fade-out?
certo e c'è pure qwtplot3d
se scarichi i qt-demos vedrai che le qt hanno molto da offrire in quanto ad effetti grafici
ovviamente le qt sono ottimizzate pure per il mobile http://arstechnica.com/open-source/news/2010/09/nokias-cross-platform-development-strategy-evolves-with-qt-47.ars
considera che delle qt esistono port per android http://code.google.com/p/android-lighthouse/ ed è in corso il porting su iphone http://qt.gitorious.org/+qt-iphone/qt/qt-iphone-clone
edit: le QT hanno licenza LGPL, quindi dovrei rilasciare il codice ( di tutto il programma o solo dell'interfaccia? ) del software per usarle? se si, ok, le ho già depennate :D
no la lgpl non è la gpl
quella licenza ammette la possibilità di distribuire programmi non gpl che usano qt
ok, ho visto un paio di video e mi sembra interessante, ma le QT sono librerie che devo compilare staticamente con il mio programma o sono già disponibili nell'ambiente e devono essere linkate dinamicamente? questo ad esempio non l'ho capito.
certo e c'è pure qwtplot3d
se scarichi i qt-demos vedrai che le qt hanno molto da offrire in quanto ad effetti grafici
ovviamente le qt sono ottimizzate pure per il mobile http://arstechnica.com/open-source/news/2010/09/nokias-cross-platform-development-strategy-evolves-with-qt-47.ars
considera che delle qt esistono port per android http://code.google.com/p/android-lighthouse/ ed è in corso il porting su iphone http://qt.gitorious.org/+qt-iphone/qt/qt-iphone-clone
no la lgpl non è la gpl
quella licenza ammette la possibilità di distribuire programmi non gpl che usano qt
quindi posso creare anche una applicazione commerciale e a sorgente chiuso volendo? senza pagare nulla? allora perché le QT offrono la licenza "commercial"?
pabloski
20-02-2011, 20:22
ok, ho visto un paio di video e mi sembra interessante, ma le QT sono librerie che devo compilare staticamente con il mio programma o sono già disponibili nell'ambiente e devono essere linkate dinamicamente? questo ad esempio non l'ho capito.
dipende dall'ambiente....windows non le ha di serie, linux si
logicamente puoi linkarle staticamente oppure dinamicamente o le fornisci con l'eseguibile/nell'installer
quindi posso creare anche una applicazione commerciale e a sorgente chiuso volendo? senza pagare nulla? allora perché le QT offrono la licenza "commercial"?
il motivo è questo http://qt.nokia.com/products/licensing/
se usi le qt lgpl devi rendere disponibili i sorgenti delle qt, se usi la licenza commerciale non devi rendere disponibile nulla...ovviamente non puoi linkare staticamente le qt lgpl ad un programma non opensource
poi la lgpl non ti garantisce supporto diretto da parte di nokia
dipende dall'ambiente....windows non le ha di serie, linux si
logicamente puoi linkarle staticamente oppure dinamicamente o le fornisci con l'eseguibile/nell'installer
il motivo è questo http://qt.nokia.com/products/licensing/
se usi le qt lgpl devi rendere disponibili i sorgenti delle qt, se usi la licenza commerciale non devi rendere disponibile nulla...ovviamente non puoi linkare staticamente le qt lgpl ad un programma non opensource
poi la lgpl non ti garantisce supporto diretto da parte di nokia
quindi avevo capito bene: non posso proporre una applicazione commerciale sul mercato senza pubblicare la parte in QT usando la licenza lgpl; cercherò alternative.
è un progetto interessante, però investire tutti quei soldi solo per l'interfaccia grafica mi sembra una presa in giro, è normale che poi solo pochissimi software usano le QT .
a questo punto mi conviene puntare su Cocoa e WPF, almeno non devo pagare nulla se non per mettere le applicazioni sul market e i framework sono nativi.
pabloski
20-02-2011, 21:06
quindi avevo capito bene: non posso proporre una applicazione commerciale sul mercato senza pubblicare la parte in QT usando la licenza lgpl; cercherò alternative.
no non facciamo confusione
la licenza lgpl è nata a causa delle lamentele di molti sviluppatori che non potevano usare librerie gpl nei loro software a codice chiuso ( commerciali e non )
la fsf creò la lgpl la quale stabilisce la possibilità di linkare librerie lgpl con programmi non a codice aperto
quello che ti viene chiesto di fornire non è il sorgente del tuo programma ma della libreria lgpl che stai usando, in questo caso qt
è un progetto interessante, però investire tutti quei soldi solo per l'interfaccia grafica mi sembra una presa in giro, è normale che poi solo pochissimi software usano le QT .
no vabbè le qt vanno oltre la solita grafica e sono relativamente giovani
attualmente vengono usate per lo più da adobe, google, skype, autodesk e qualche altro
no non facciamo confusione
la licenza lgpl è nata a causa delle lamentele di molti sviluppatori che non potevano usare librerie gpl nei loro software a codice chiuso ( commerciali e non )
la fsf creò la lgpl la quale stabilisce la possibilità di linkare librerie lgpl con programmi non a codice aperto
quello che ti viene chiesto di fornire non è il sorgente del tuo programma ma della libreria lgpl che stai usando, in questo caso qt
no vabbè le qt vanno oltre la solita grafica e sono relativamente giovani
attualmente vengono usate per lo più da adobe, google, skype, autodesk e qualche altro
cioé, un attimo, io le condizioni della Lgpl le ho lette ma non le avevo interpretate così, io quindi creo il mio bel programma e secondo la versione lgpl delle QT:
- NON devo pubblicare il sorgente del mio programma
- NON devo pubblicare neanche la sola parte dell'interfaccia scritta in QT
ma DEVO pubblicare le librerie QT che uso?
cioé io distribuisco il mio exe, facendo il caso di Windows, e insieme, magari in un archivio compresso, devo metterci pure le QT? che senso ha?
a questo punto non capisco ne la Lgpl in se, ne a che pro mettere le librerie vicino ad ogni programma distribuito, non era conveniente per entrambi mettere una citazione nei credits oppure usare un bel logo e un riferimento al sito ufficiale delle QT, ad esempio?
inoltre se il circuito della distribuzione dell'applicazione non è da me gestito ed è chiuso, come si fa? accodo alla applicazione svariate MB di librerie a babbo morto?
potresti chiarirmi gentilmente questo aspetto nella pratica?
pabloski
20-02-2011, 21:46
cioé, un attimo, io le condizioni della Lgpl le ho lette ma non le avevo interpretate così, io quindi creo il mio bel programma e secondo la versione lgpl delle QT:
- NON devo pubblicare il sorgente del mio programma
- NON devo pubblicare neanche la sola parte dell'interfaccia scritta in QT
ma DEVO pubblicare le librerie QT che uso?
cioé io distribuisco il mio exe, facendo il caso di Windows, e insieme, magari in un archivio compresso, devo metterci pure le QT? che senso ha?
è il senso della gpl :D
in ogni caso la licenza parla di rendere accessibili i sorgenti, quindi ( come si fa quasi sempre con i programmi gpl e lgpl ) basta un link al sito dove si trovano i sorgenti di qt
la licenza in questione è questa http://www.gnu.org/licenses/lgpl-2.1.html
e il punto che riguarda il caso è
5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.
e ancora questo
You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License.
te la cavi facendo così
b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.
in soldoni se fai il linking statico stai incorporando la libreria nel tuo eseguibile e quindi è un lavoro derivativo, se invece usi il linking dinamico non è un lavoro derivativo
logicamente dovendo distribuire i binari delle qt devi distribuire ( o linkare ad un sito che li distribuisce ) i sorgenti delle qt come prevede la licenza lgpl
se le qt sono già installare sul pc dell'utente e quindi tu non le distribuisce nel tuo pacchetto, sei ovviamente assolto dal dovere dare i sorgenti delle qt....ad esempio i pacchetti linux siccome non hanno dentro le qt ma le scaricano tramite il package manager si ritiene che non distribuiscono le qt e quindi non devono mettere i sorgenti ( o un link ai sorgenti )
p.s. allego una traduzione della licenza http://it.wikisource.org/wiki/Licenza_Pubblica_Generica_Attenuata_%28LGPL%29_del_progetto_GNU
attenzione all'interpretazione di questa parte
"b) Usare un appropriato meccanismo di condivisione delle librerie per collegare la Libreria. Un meccanismo appropriato è quello che (1) durante l'esecuzione utilizza una copia della libreria già presente nel computer dell'utente, anziché copiare le funzioni della libreria nell'eseguibile"
quando parla di copiare le funzioni della libreria nell'eseguibile sta parlando di linking statico
quando parla di usare una copia della libreria già presente nel computer dell'utente sta parlando di linking dinamico ( in questo caso il tuo programma è visto come isolato e quindi totalmente libero dalla lgpl )
Io mi permetto di suggerire http://www.fltk.org/
O meglio, suggerire di darci un'occhiata :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.