<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>G.R.Y.S. &#187; PyQt4</title>
	<atom:link href="http://www.grys.it/index.php/tag/pyqt4/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.grys.it</link>
	<description>...giusto per divertirsi</description>
	<lastBuildDate>Sun, 29 Jan 2012 23:12:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Prima versione di chiamami</title>
		<link>http://www.grys.it/index.php/2009/02/prima-versione-di-chiamami/</link>
		<comments>http://www.grys.it/index.php/2009/02/prima-versione-di-chiamami/#comments</comments>
		<pubDate>Sat, 21 Feb 2009 00:05:49 +0000</pubDate>
		<dc:creator>gian</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[PyQt4]]></category>

		<guid isPermaLink="false">http://www.grys.it/?p=313</guid>
		<description><![CDATA[Ho messo sul sito, una prima versione di Chiamami, una semplice agenda telefonica. Quanto prima farò una pagina di documentazione. Al momento è possibile scaricare i sorgenti.
]]></description>
			<content:encoded><![CDATA[<p>Ho messo sul sito, una prima versione di Chiamami, una semplice agenda telefonica. Quanto prima farò una pagina di documentazione. Al momento è possibile scaricare i sorgenti.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grys.it/index.php/2009/02/prima-versione-di-chiamami/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usare le try icon in PyQt</title>
		<link>http://www.grys.it/index.php/2008/03/usare-le-try-icon-in-pyqt/</link>
		<comments>http://www.grys.it/index.php/2008/03/usare-le-try-icon-in-pyqt/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 22:07:16 +0000</pubDate>
		<dc:creator>gian</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[PyQt4]]></category>

		<guid isPermaLink="false">http://www.grys.it/?p=13</guid>
		<description><![CDATA[Durante lo sviluppo di QtNotes, mi sono imbattutto nella necessitàdi utilizzare la try icon. Questa icona rimane nel vassoio di sistema e consente di tenere l&#8217;applicazione minimizzata funzionante pur senza lasciarla visibile.
Usare le try icon in PyQt però è  leggermente diverso da come si farebbe in C++ (linguaggio nativo delle Qt). Si può dividere [...]]]></description>
			<content:encoded><![CDATA[<p>Durante lo sviluppo di QtNotes, mi sono imbattutto nella necessitàdi utilizzare la try icon. Questa icona rimane nel vassoio di sistema e consente di tenere l&#8217;applicazione minimizzata funzionante pur senza lasciarla visibile.</p>
<p>Usare le try icon in PyQt però è  leggermente diverso da come si farebbe in C++ (linguaggio nativo delle Qt). Si può dividere il lavoro in due parti:</p>
<ol>
<li>praparare la finistra principale a gestire la try-icon</li>
<li>creare l&#8217;icona e connettere i relativi signal alle funzioni</li>
</ol>
<p>Il primo punto serve in quanto bisogna implementare il metodo virtuale closeEvent, che viene generato quando viene chiusa la finestra. Questo è necessario in quanto in PyQt4 non è possibile l&#8217;ereditarietà  multipla. Usando i file .ui per l&#8217;interfaccia non è  possibile derivare la finestra principale da <em>QMainWindow. </em>Questo si risolve derivando una classe da <em>QtGui.QMainWindow</em>.</p>
<pre>class MainWindow(QtGui.QMainWindow):</pre>
<pre>	def __init__(self):</pre>
<pre>		QtGui.QMainWindow.__init__(self)</pre>
<pre>	def closeEvent(self,  ev):</pre>
<pre>		self.hide()</pre>
<pre>		systray.showMessage('QtNotes', 'Application minimized')</pre>
<pre>		ev.ignore()</pre>
<pre>	def ShowWindow(self):</pre>
<pre>		self.show()</pre>
<p>che chiameremo <em>MainWindow.</em> In questa classe ridefiniamo l&#8217;evento <em>closeEvent</em> per nascondere la finestra, mostrare un messaggio (facoltativo ma utile) ed in seguito ignorare l&#8217;evento. Questo serve per fare in modo che una volta chiusa la finestra premento il pulsante con la X, la finestra non venga chiusa ma &lt;br /&gt;solo nascosta. La funzione <em>ShowWindow</em> serve unicamente per rendere la finestra nuovamente visibile.</p>
<p>In C++ si sarebbe usato un altro metodo. Potendo sfruttare l&#8217;ereditarietà multipla, si sarebbe fatta una cosa tipo:</p>
<pre>class QtNotes(QtGui.QMainWindow, UI_MainWindow)</pre>
<p>Una volta preparata questa classe, si procede come al solito quando si usano i file .ui, tenendo presente che la finestra va creata istanziando la classe <em>MainWindow</em> e non la <em>QtGui.QMainWindow</em>. A questo punto siamo pronti a creare ed utilizzare la try icon. Il codice minimo è questo:</p>
<pre>icon=QtGui.QIcon('pixmaps/todo_list.png')
systray=QtGui.QSystemTrayIcon(icon)
menu = QtGui.QMenu()
showAction = menu.addAction('Show')
sep1 = menu.addSeparator()
quitAction = menu.addAction('Quit')
QtCore.QObject.connect(quitAction,Â  QtCore.SIGNAL("triggered()"), ui.QuitApp)
QtCore.QObject.connect(showAction,Â  QtCore.SIGNAL("triggered()"), window.ShowWindow)
systray.setContextMenu(menu)
systray.show()</pre>
<p>che crea una try-icon, gli associa un context menù (che in questo caso ha solo due voci) e connette i relativi slot alle funzioni che ci interessano. Con questo la creazione di una try-icon funzionante è completa. L&#8217;unica cosa che rimane fuor è la possibilità  di associare la try icon agli eventi tipo click e double-click del pulsante sinistro del mouse per fargli eseguire delle azioni. Il context menù infatti risponde al tasto destro del mouse.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grys.it/index.php/2008/03/usare-le-try-icon-in-pyqt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dialog non modali</title>
		<link>http://www.grys.it/index.php/2007/12/dialog-non-modali/</link>
		<comments>http://www.grys.it/index.php/2007/12/dialog-non-modali/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 14:13:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[PyQt4]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Chi lavora con i toolkit grafici sa cosa sono dialog modali e non modali. In breve:

Un dialogo modale non consente di interagire con l&#8217;applicazione che l&#8217;ha aperto
Un dialog non modale lo consente

Per poter avere più dialoghi non modali, sembra che con le Qt (e PyQt4) si debba usare il seguente codice:
dlg = QtGui.QDialog()
dlggui = Ui_dialog()
dlggui.setupUi(dlg)
dlg.show()
dlg.exec_()
]]></description>
			<content:encoded><![CDATA[<p>Chi lavora con i toolkit grafici sa cosa sono dialog modali e non modali. In breve:</p>
<ul>
<li>Un dialogo modale non consente di interagire con l&#8217;applicazione che l&#8217;ha aperto</li>
<li>Un dialog non modale lo consente</li>
</ul>
<p>Per poter avere più dialoghi non modali, sembra che con le Qt (e PyQt4) si debba usare il seguente codice:<br />
<code>dlg = QtGui.QDialog()<br />
dlggui = Ui_dialog()<br />
dlggui.setupUi(dlg)<br />
dlg.show()<br />
dlg.exec_()</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.grys.it/index.php/2007/12/dialog-non-modali/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyQt4 &#8211; QDockWidget</title>
		<link>http://www.grys.it/index.php/2007/10/pyqt4-qdockwidget/</link>
		<comments>http://www.grys.it/index.php/2007/10/pyqt4-qdockwidget/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 12:20:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[PyQt4]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Con la versione 4 delle Qt, non è più possibile avere le toolbar flottanti. Per ovviare al problema si può usare un altro widget, il QDockWidget, che fa proprio questo. Inoltre consente di inserire anche dei widget custom direttamente da Qt-Designer, cosa che non è possibile con le Toolbar. C&#8217;è però un problema: le toolbar, [...]]]></description>
			<content:encoded><![CDATA[<p>Con la versione 4 delle Qt, non è più possibile avere le toolbar flottanti. Per ovviare al problema si può usare un altro widget, il QDockWidget, che fa proprio questo. Inoltre consente di inserire anche dei widget custom direttamente da Qt-Designer, cosa che non è possibile con le Toolbar. C&#8217;è però un problema: le toolbar, quando venivano spostate (es, dall&#8217;alto a sinistra) si ridimensionavano da sole e rimettevano a posto il layout. Il QDockWidget no. Però a tutto si può ovviare, quindi con un po&#8217; di codice si supera anche questo problema. Prima di tutto bisogna creare nel QDockWidget un layout di tipo grid in cui vengono posizionati i controlli.Per un baco nel Pyuic 4, si deve aggiungere il QDockWidget alla mainwindow dell&#8217;applicazione manualmente, con questa riga di codice</p>
<p><span class="code">window.addDockWidget(QtCore.Qt.RightDockWidgetArea, ui.dockWidget)</span></p>
<p>Una volta che tutto è pronto si può cominciare a risolvere il problema del layout.Per prima cosa bisogna connette il QDockWidget al segnale TopLevelChanged, in questo modo:</p>
<p><span class="code">QtCore.QObject.connect(ui.dockWidget,QtCore.SIGNAL(&#8220;topLevelChanged(bool)&#8221;),ui.select)</span></p>
<p>Questo fa in modo che quando cambiate posizione al QDockWidget, venga chiamata il metodo select (o come decidete di chiamarla, magari qualcosa del tipo relayout). Il metodo in questione semplicemente ridispone i controlli a seconda del fatto che il QDockWidget sia da impaginare in verticale (quindi è &#8220;dockato&#8221; sul lato destro o sinistro) o in orizzontale (quindi sia &#8220;dockato&#8221; in alto o in basso).Il codice è banale:</p>
<p><code>def select(self):<br />
ui.gridlayout.removeWidget(ui.comboBox)<br />
ui.gridlayout.removeWidget(ui.toolButton)<br />
ui.gridlayout.removeWidget(ui.toolButton_2)<br />
ui.gridlayout.removeWidget(ui.toolButton_3)</code></p>
<p>area = window.dockWidgetArea(ui.dockWidget)</p>
<p>if area == QtCore.Qt.BottomDockWidgetArea or area == QtCore.Qt.TopDockWidgetArea:<br />
ui.gridlayout.addWidget(ui.comboBox, 0, 0)<br />
ui.gridlayout.addWidget(ui.toolButton, 0, 1)<br />
ui.gridlayout.addWidget(ui.toolButton_2, 0, 2)<br />
ui.gridlayout.addWidget(ui.toolButton_3, 0, 3)<br />
if area == QtCore.Qt.LeftDockWidgetArea or area == QtCore.Qt.RightDockWidgetArea:<br />
ui.gridlayout.addWidget(ui.comboBox, 0, 0)<br />
ui.gridlayout.addWidget(ui.toolButton, 1, 0)<br />
ui.gridlayout.addWidget(ui.toolButton_2, 2, 0)<br />
ui.gridlayout.addWidget(ui.toolButton_3, 3, 0)</p>
<p>Semplicemente in caso di cambio tra verticale/orizzontare, tutti i controlli vengono riarrangiati (in questo caso) su una riga o su una colonna. In caso di più colonne e/o righe il codice non diventa più complicato, a meno che non si decida di fare qualcosa di dinamico.Rimangono fuori alcuni aspetti tipo ridimensionare correttamente il QDockWidget una volta ridisposti i controlli o eliminare le righe/colonne non utilizzate, ma la logica è questa.Un possibile miglioramento sarebbe quello di usare un layout verticale o orizzontale al posto della griglia</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grys.it/index.php/2007/10/pyqt4-qdockwidget/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyQt4 &#8211; Editare celle</title>
		<link>http://www.grys.it/index.php/2007/10/pyqt4-editare-celle/</link>
		<comments>http://www.grys.it/index.php/2007/10/pyqt4-editare-celle/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 12:12:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[PyQt4]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Se si vuole fare in modo che una grid (QTableWidget o simili) sia attiva ma non editabile o editabile solo in seguito a certi eventi, basta impostare la proprietà  editTriggers al valore appropriato.I valori elencati sono i valori che possono essere selezionati, anche in combinazione tra di loro:



QAbstractItemView::NoEditTriggers
Nessun edit


QAbstractItemView::CurrentChanged
L&#8217;editing inizia quando l&#8217;item corrente è¨ [...]]]></description>
			<content:encoded><![CDATA[<p>Se si vuole fare in modo che una grid (QTableWidget o simili) sia attiva ma non editabile o editabile solo in seguito a certi eventi, basta impostare la proprietà  <strong>editTriggers </strong>al valore appropriato.I valori elencati sono i valori che possono essere selezionati, anche in combinazione tra di loro:</p>
<table border="0">
<tbody>
<tr style="background-color: #ffffff" valign="top">
<td>QAbstractItemView::NoEditTriggers</td>
<td>Nessun edit</td>
</tr>
<tr style="background-color: #ffffff" valign="top">
<td>QAbstractItemView::CurrentChanged</td>
<td>L&#8217;editing inizia quando l&#8217;item corrente è¨ cambiato</td>
</tr>
<tr style="background-color: #ffffff" valign="top">
<td>QAbstractItemView::DoubleClicked</td>
<td>L&#8217;editing inizia quando si esegue un doppio click sull&#8217;item selezionato</td>
</tr>
<tr style="background-color: #ffffff" valign="top">
<td>QAbstractItemView::SelectedClicked</td>
<td>L&#8217;editing inizia quando si esegue un singolo click sull&#8217;item selezionato</td>
</tr>
<tr style="background-color: #ffffff" valign="top">
<td>QAbstractItemView::EditKeyPressed</td>
<td>L&#8217;editing inizia quando il tasto di editing predefinito èpremuto sull&#8217;item corrente</td>
</tr>
<tr style="background-color: #ffffff" valign="top">
<td>QAbstractItemView::AnyKeyPressed</td>
<td>L&#8217;editing inizia quando viene premuto un tasto sull&#8217;item corrente</td>
</tr>
<tr style="background-color: #ffffff" valign="top">
<td>QAbstractItemView::AllEditTriggers</td>
<td>L&#8217;editing inizia per tutti i valori sopra riportati</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.grys.it/index.php/2007/10/pyqt4-editare-celle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyQt4 &#8211; Traduzioni</title>
		<link>http://www.grys.it/index.php/2007/10/pyqt4-traduzioni/</link>
		<comments>http://www.grys.it/index.php/2007/10/pyqt4-traduzioni/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 12:01:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[PyQt4]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Come ogni programma che si rispetti, anche quelli scritti in PyQt4 hanno la possibilità  di essere localizzati.Per poter fare la traduzione delle varie stringhe bisogna seguire vari passi:
1 &#8211; Preparare il file delle traduzioni
Il file delle traduzioni è un file che contiene le stringhe in una lingua base (esempio inglese) e le corrispondenti traduzioni [...]]]></description>
			<content:encoded><![CDATA[<p>Come ogni programma che si rispetti, anche quelli scritti in PyQt4 hanno la possibilità  di essere localizzati.Per poter fare la traduzione delle varie stringhe bisogna seguire vari passi:</p>
<p><strong>1 &#8211; Preparare il file delle traduzioni</strong></p>
<p>Il file delle traduzioni è un file che contiene le stringhe in una lingua base (esempio inglese) e le corrispondenti traduzioni nella lingua in cui si vuole localizzare il programma.La struttura del file è la seguente:&lt;!DOCTYPE TS&gt;&lt;TS&gt;&lt;context&gt; &lt;name&gt;D_MainWin&lt;/name&gt;  &lt;message&gt;   &lt;source&gt;Skipper&lt;/source&gt;   &lt;translation&gt;Skipper&lt;/translation&gt;  &lt;/message&gt; &lt;/context&gt;&lt;/TS&gt;dove <em>name</em> indica la sezione di cui si parla (ne parliamo dopo), <em>source</em> indica la stringa di default e <em>translation</em> indica la stringa tradotta. Il resto Ã¨ del formato del file.Una precisazione <em>name</em> indica il nome dell&#8217;oggetto che vogliamo localizzare, semplicemente il valore della proprieta <em>objectName</em> Una volta preparato il file (che deve avere estensione .ts) si lancia il programma Qt Linguist e dal menù file si seleziona la voce Release, questo creerÃ  un file .qm cheÃ¨ il file compilato, il modello ricorda il giro file.po/file.gmo di gettext in effetti. QT Linguist ha un buon help in linea, fate riferimento a questo per tutti i problemi.</p>
<p><strong>2 &#8211; Usare i file delle traduzioni</strong>Una volta creato il file .qm, il più Ã¨¨ fatto. La localizzazione dei programmi Ã¨ gestita dalla classe <em>QTranslator</em>. Il codice necessario per inizializzare il tutto sono queste 3 righe:translator =QtCore.QTranslator()translator.load(QtCore.QString(&#8216;i18n_it&#8217;))QtGui.qApp.installTranslator(translator)Dove il file (i18n_it in questo caso) puÃ²essere completo di un path (relativo o assoluto)<strong></strong></p>
<p><strong>3 &#8211; Preparare il codice</strong>Una volta preparato il necessario e istanziata la classe, per avere la traduzione effettiva basta usare la funzione <span class="code">tr(&#8220;ciao&#8221;)</span> per ogni stringa che si vuole tradurre.La funzione <em>tr</em> si preoccupa di recuperare la stringa tradotta in base al file della lingua caricato.Ci possono essere due risultati:</p>
<ol>
<li>la funzione trova la traduzione : viene usata</li>
<li>la funzione non trova la traduzione: non succede nulla e viene usata la stringa passata come argomento</li>
</ol>
<p>Piccola nota: se usate QtDesigner per creare l&#8217;interfaccia, il programma inserirÃ  da solo tutte le chiamate alla funzione <em>tr</em> all&#8217;atto della generazione dei file necessari. A questo punto basta aggiungerli al file .ts e rilasciarlo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grys.it/index.php/2007/10/pyqt4-traduzioni/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyQt4 &#8211; Custom Signal</title>
		<link>http://www.grys.it/index.php/2007/10/pyqt4-custom-signal/</link>
		<comments>http://www.grys.it/index.php/2007/10/pyqt4-custom-signal/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 11:55:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[PyQt4]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Contrariamente alla versione precedente, con la versione 4 di Qt-Designer, non è possibile assegnare ad un evento uno slot custom, cosa che era molto comoda. Per ovviare a questo problema bisogna collegare un evento ad uno slot custom manualmente, dopo la creazione dell&#8217;interfaccia. Ecco un esempio.
class MainWin(Ui_DMainWin):
def __init__(self):
pass
def CustomSignal(self):
print &#8220;Hello&#8221;
app = QtGui.QApplication(sys.argv)
window = QtGui.QDialog()
ui = [...]]]></description>
			<content:encoded><![CDATA[<p>Contrariamente alla versione precedente, con la versione 4 di Qt-Designer, non è possibile assegnare ad un evento uno slot custom, cosa che era molto comoda. Per ovviare a questo problema bisogna collegare un evento ad uno slot custom manualmente, dopo la creazione dell&#8217;interfaccia. Ecco un esempio.</p>
<p align="left">class MainWin(Ui_DMainWin):</p>
<p align="left">def __init__(self):</p>
<p align="left">pass</p>
<p align="left">def CustomSignal(self):</p>
<p align="left">print &#8220;Hello&#8221;</p>
<p align="left">app = QtGui.QApplication(sys.argv)</p>
<p align="left">window = QtGui.QDialog()</p>
<p align="left">ui = MainWin()</p>
<p align="left">ui.setupUi(window)</p>
<p align="left">#Custom Signal connections</p>
<p align="left">QtCore.QObject.connect(ui.Button, QtCore.SIGNAL(&#8220;clicked()&#8221;), ui.CustomSignal)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grys.it/index.php/2007/10/pyqt4-custom-signal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyQt4 &#8211; File Dialog</title>
		<link>http://www.grys.it/index.php/2007/10/pyqt4-file-dialog/</link>
		<comments>http://www.grys.it/index.php/2007/10/pyqt4-file-dialog/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 11:30:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[PyQt4]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[La libreria Qt fornisce i dialoghi standard per la gestione di funzioni tipo Save, Open, Save As&#8230; e via dicendo. PerÃ² utilizzare i QFileDialog può essere un po&#8217; ostico, soprattutto all&#8217;inizio.  Ecco quindi un paio di cose da sapere.  Filtri sui formati E&#8217; possibile impostare una serie di filtri per i formati di [...]]]></description>
			<content:encoded><![CDATA[<p>La libreria Qt fornisce i dialoghi standard per la gestione di funzioni tipo Save, Open, Save As&#8230; e via dicendo. PerÃ² utilizzare i QFileDialog può essere un po&#8217; ostico, soprattutto all&#8217;inizio.  Ecco quindi un paio di cose da sapere.  <strong>Filtri sui formati</strong> E&#8217; possibile impostare una serie di filtri per i formati di file che sono gestiti, solo che non Ã¨ proprio intuitivo o documentato chiaramente, almeno in PyQt4. I filtri per i formati file sono il 4 parametro (filter) dei metodi statici della classe QFileDialog e si deve specificare così:<span class="outline"> &#8220;html (*.html);;pdf (*.pdf);;All Supported Files (*.pdf *.html)&#8221;</span> <strong>Formato selezionato</strong>Come Ã¨ possibile impostare l&#8217;elenco dei filtri, Ã¨ anche possibile recuperare il tipo di file (filtro) selezionato dall&#8217;utente. Ovviamente anche qui, la cosa in PyQt Ã¨ documentata male. Il sistema più comodo Ã¨ questo:</p>
<pre class="outline">fileType = QtCore.QString("html *.html")</pre>
<pre class="outline">nfileName = QtGui.QFileDialog.getSaveFileName(None,</pre>
<pre class="outline">        "SaveAs...",</pre>
<pre class="outline">	".",</pre>
<pre class="outline">	"html (*.html);;pdf (*.pdf);; All Supported Files (*.pdf *.html)",</pre>
<pre class="outline">        fileType)</pre>
<p>Dopo la chiusura del dialogo, <em>fileType </em>conterrÃ  il filtro selezionato nella forma <em>html (*.html)</em>Attenzione al tipo del parametro fileType: <strong>deve</strong> essere di tipo QString, o la cosa non funziona.Il dialogo inoltre ritorna il nome del file con il percorso completo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grys.it/index.php/2007/10/pyqt4-file-dialog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

