Bonjour,
j'ai realise une interface graphique a l'aide de QTDesigner et je souhaite pouvoir l'utiliser sur un autre ordinateur sans changer la forme de l'application.
Savez-vous ce qui est possible de faire?
Merci par avance pour votre aide
Bonjour,
j'ai realise une interface graphique a l'aide de QTDesigner et je souhaite pouvoir l'utiliser sur un autre ordinateur sans changer la forme de l'application.
Savez-vous ce qui est possible de faire?
Merci par avance pour votre aide
J'ai du mal m'exprmier alors.
Je ne parlais pas de l'application en elle meme mais de l'interface graphique que j'ai cree.
En effet, lorsque je veux l'utiliser sur un autre ordinateur, la taille des widgets et leur placement change.
J'aurais donc aime savoir s'il y avait un moyen de modifier cela.
La question serait plutôt de savoir comment faire pour que ce qui est produit par QtDesigner s'adapte à la résolution de l'écran.
La réponse courte pourrait être de fabriquer un UI pour chaque résolution et on charge conditionnellement le moins mauvais. Peut être que d'autres auront des idées plus élaborées sinon posez la question dans le forum Qt/C++: ils ont le même problème.
- W
Salut,
Peut-être n'as-tu pas utilisé de QLayout, ça peut expliquer ce comportement.
Avec les QLayout Qt maintient une mise en page correcte à n'importe quelle résolution.
Toutefois si tu conçois sur un grand écran une appli qui devra tourner sur une tablette ce sera à toi d'en tenir compte lors de son concept.
Bonjour,
Merci pour vos reponses.
J'ai bien utilise un Layout mais cela ne suffit pas. Je cherche effectivement a adapter la fenetre de mon interface graphique en fonction de la resolution de l ecran que l on utilise.
Si vous avez une idee n'hesitez pas
Montre le code de ta mainWindow, je suis sur que tu utilises mal tes QLayout.
Bonjour,
On peut connaître la définition de l'écran avec la méthode screenGeometry de QDesktopWidget.
Connaissant la taille en pixel de la fenêtre, on devrait donc pouvoir calculer le ratio à utiliser pour que la fenêtre prenne la même place dans l'écran, quelque soit sa définition.
Et grâce aux layouts, le contenu de la fenêtre suivra correctement les variations de dimensions de la fenêtre.
Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
Mes recettes python: http://www.jpvweb.com
J'ai uniquement utilise QTDesigner pour le layout, donc ceci est le code genere par le logiciel (je ne l'ai pas modifie).
Voici donc une partie du code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName(_fromUtf8("Dialog")) Dialog.resize(323, 309) self.gridLayout = QtGui.QGridLayout(Dialog) self.gridLayout.setObjectName(_fromUtf8("gridLayout")) self.div_lcdNumber_3 = QtGui.QLCDNumber(Dialog) self.div_lcdNumber_3.setObjectName(_fromUtf8("div_lcdNumber_3")) self.gridLayout.addWidget(self.div_lcdNumber_3, 3, 2, 1, 1) self.div_pushButton_2 = QtGui.QPushButton(Dialog) self.div_pushButton_2.setObjectName(_fromUtf8("div_pushButton_2")) self.gridLayout.addWidget(self.div_pushButton_2, 2, 2, 1, 1) self.multiply_lcdNumber_2 = QtGui.QLCDNumber(Dialog) self.multiply_lcdNumber_2.setObjectName(_fromUtf8("multiply_lcdNumber_2")) self.gridLayout.addWidget(self.multiply_lcdNumber_2, 3, 1, 1, 1) self.lineEdit = QtGui.QLineEdit(Dialog) self.lineEdit.setMaximumSize(QtCore.QSize(50, 16777215)) self.lineEdit.setObjectName(_fromUtf8("lineEdit")) self.gridLayout.addWidget(self.lineEdit, 0, 0, 1, 1) self.multiply_pushButton = QtGui.QPushButton(Dialog) self.multiply_pushButton.setObjectName(_fromUtf8("multiply_pushButton")) self.gridLayout.addWidget(self.multiply_pushButton, 2, 1, 1, 1) self.pushButton_clear = QtGui.QPushButton(Dialog) self.pushButton_clear.setObjectName(_fromUtf8("pushButton_clear")) self.gridLayout.addWidget(self.pushButton_clear, 2, 0, 1, 1) self.clear_pushButton = QtGui.QPushButton(Dialog) self.clear_pushButton.setObjectName(_fromUtf8("clear_pushButton")) self.gridLayout.addWidget(self.clear_pushButton, 1, 2, 1, 1) self.print_lcdNumber = QtGui.QLCDNumber(Dialog) self.print_lcdNumber.setMaximumSize(QtCore.QSize(16777215, 31)) self.print_lcdNumber.setObjectName(_fromUtf8("print_lcdNumber")) self.gridLayout.addWidget(self.print_lcdNumber, 3, 0, 1, 1) self.pushButton_picture = QtGui.QPushButton(Dialog) self.pushButton_picture.setObjectName(_fromUtf8("pushButton_picture")) self.gridLayout.addWidget(self.pushButton_picture, 0, 2, 1, 1) self.retranslateUi(Dialog) QtCore.QObject.connect(self.clear_pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.lineEdit.clear) QtCore.QMetaObject.connectSlotsByName(Dialog)
Et bien, c'est juste une boîte de dialogue parfaitement redimensionnable, son comportement est normal.
Comme tu fixes la largeur maximale de la lineEdit à 50 pixels (à peine six caractère !) il est possible que sur un écran haute résolution ça apparaisse fort petit, mais c'est le seul problème que je voie.
Essaye sans fixer la taille du lineEdit et donne lui deux colonnes de largeur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 #self.lineEdit.setMaximumSize(QtCore.QSize(50, 16777215)) self.gridLayout.addWidget(self.lineEdit, 0, 0, 1, 2)
Merci beaucoup pour votre aide. J'ai finalement utilisé la méthode de Tyrtamos en travaillant sur les pixels.
Voici le code que j'ai utilisé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 def resize_app(application, window): desktop = QtGui.QApplication.desktop() width = application.width()*desktop.width()/1600 # 1600 is our screen width height = application.height()*desktop.height()/838 # 838 is our screen height window.resize(width, height)
Si c'était pour en arriver là tu aurais pu faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Dialog.showFullScreen()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager