fr:actionaz_qtscript
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
fr:actionaz_qtscript [2014/10/06 22:28] – [Les widgets spécifiques pour créer une fenêtre] violette | fr:actionaz_qtscript [2025/05/07 16:33] (Version actuelle) – potdemiel | ||
---|---|---|---|
Ligne 89: | Ligne 89: | ||
== Les communes == | == Les communes == | ||
- | Ceci n'est pas une liste exhaustive, je vous renvoie ici pour avoir la liste détaillé. | + | Ceci n'est pas une liste exhaustive, je vous renvoie |
* **cursor** : Propriété qui permet de choisir le curseur qui doit s' | * **cursor** : Propriété qui permet de choisir le curseur qui doit s' | ||
Ligne 133: | Ligne 133: | ||
<note important> | <note important> | ||
- | Autre solution pour ne modifier que la hauteur ou la largeur... Ou les 2, qui fonctionne, que le widget | + | Autre solution pour ne modifier que la hauteur ou la largeur... Ou les 2, qui fonctionne, que le widget |
<code javascript> | <code javascript> | ||
Ligne 142: | Ligne 142: | ||
b.maximumWidth = 200; | b.maximumWidth = 200; | ||
- | b.minimumWidth | + | b.minimumHeight |
- | b.maximumWidth | + | b.maximumHeight |
b.minimumSize = new QSize(200, 200); //Pour modifier la largeur et la hauteur | b.minimumSize = new QSize(200, 200); //Pour modifier la largeur et la hauteur | ||
Ligne 152: | Ligne 152: | ||
<note important> | <note important> | ||
- | |||
- | Ici, b mesurera 200 pixels de largeur. | ||
* **visible** : Propriété qui contrôle la visibilité d'une fenêtre. | * **visible** : Propriété qui contrôle la visibilité d'une fenêtre. | ||
Ligne 185: | Ligne 183: | ||
Ici, le premier paramètre envoyé à l' | Ici, le premier paramètre envoyé à l' | ||
- | |||
- | <note important> | ||
Exemple de flag : | Exemple de flag : | ||
Ligne 192: | Ligne 188: | ||
* Qt.WindowTitleHint : Permet d' | * Qt.WindowTitleHint : Permet d' | ||
* Qt.MSWindowsFixedSizeDialogHint : Permet de fixer la taille de la fenêtre à la taille spécifiée dans sizeHint (En gros, cela fixe la taille de la fenêtre, elle n'est plus redimensionnable). | * Qt.MSWindowsFixedSizeDialogHint : Permet de fixer la taille de la fenêtre à la taille spécifiée dans sizeHint (En gros, cela fixe la taille de la fenêtre, elle n'est plus redimensionnable). | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | Le problème semble subvenir lorsque les flags sont à mettre en paramètre d'une méthode. | ||
+ | |||
+ | <code javascript> | ||
+ | |||
+ | comme | ||
+ | |||
+ | <code javascript> | ||
+ | a.setWindowFlags(Qt.MSWindowsFixedSizeDialogHint | Qt.WindowTitleHint);</ | ||
+ | |||
+ | prennent en compte uniquement le second. | ||
+ | |||
+ | <code javascript> | ||
+ | |||
+ | prend en compte uniquement le second aussi. Or | ||
+ | |||
+ | <code javascript> | ||
+ | b.alignment = Qt.AlignBottom | Qt.AlignRight;</ | ||
+ | |||
+ | prend bien en compte les 2. | ||
+ | |||
+ | J'ai essayer pleins de syntaxes différentes pour le QDialog mais je n'ai rien trouvé de concluant. | ||
+ | |||
* Qt.Tool : Permet d' | * Qt.Tool : Permet d' | ||
Ligne 248: | Ligne 269: | ||
b.addButton(QDialogButtonBox.Cancel); | b.addButton(QDialogButtonBox.Cancel); | ||
- | b.accepted.connect(a.accept); | + | b.accepted.connect(a.accept); |
- | b.rejected.connect(a.reject); | + | b.rejected.connect(a.reject); |
a.exec(); | a.exec(); | ||
Ligne 277: | Ligne 298: | ||
var d = new QPushButton(" | var d = new QPushButton(" | ||
- | b.clicked.connect(function () { | + | b.clicked.connect(function () { //clicked est un signal emis par le premier QPushButton qui execute une fonction anonyme |
c.show(); | c.show(); | ||
}); | }); | ||
- | d.clicked.connect(function () { | + | d.clicked.connect(function () { //clicked est un signal emis par le deuxième QPushButton qui execute une fonction anonyme |
c.hide(); | c.hide(); | ||
}); | }); | ||
Ligne 299: | Ligne 320: | ||
var d = new QPushButton(" | var d = new QPushButton(" | ||
- | b.clicked.connect(c, | + | b.clicked.connect(c, |
- | d.clicked.connect(c, | + | d.clicked.connect(c, |
a.exec(); | a.exec(); | ||
Ligne 320: | Ligne 341: | ||
Il y a peut être moyen de faire ça sans tableau, mais encore une fois il n'y a pas de doc pour QtScript donc beaucoup de choses partagés ici sont des choses que j'ai trouvé en testant, à tâtons, et là j'ai pas trouvé d' | Il y a peut être moyen de faire ça sans tableau, mais encore une fois il n'y a pas de doc pour QtScript donc beaucoup de choses partagés ici sont des choses que j'ai trouvé en testant, à tâtons, et là j'ai pas trouvé d' | ||
+ | |||
+ | Juste pour montrer une méthode pour passer des paramètres avec connect() | ||
+ | |||
+ | <code javascript> | ||
+ | function main() { | ||
+ | var a = new QDialog(); | ||
+ | var b = new QPushButton(" | ||
+ | |||
+ | var c = new QDialog(a); | ||
+ | var d = new QPushButton(" | ||
+ | |||
+ | | ||
+ | |||
+ | |||
+ | d.clicked.connect(c, | ||
+ | |||
+ | a.exec(); | ||
+ | } | ||
+ | |||
+ | function show(lthis, | ||
+ | { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | function hide() { | ||
+ | this.hide(); | ||
+ | } | ||
+ | |||
+ | main(); | ||
+ | </ | ||
Il est possible de créer ses propres signaux et slots, mais je ne me suis pas penché sur la question. | Il est possible de créer ses propres signaux et slots, mais je ne me suis pas penché sur la question. | ||
Ligne 432: | Ligne 484: | ||
d.setCheckState(Qt.Checked); | d.setCheckState(Qt.Checked); | ||
- | Console.print(b.checkState()); | + | Console.print(b.checkState()); |
Console.print(c.checkState()); | Console.print(c.checkState()); | ||
Console.print(d.checkState()); | Console.print(d.checkState()); | ||
Ligne 455: | Ligne 507: | ||
<code javascript> | <code javascript> | ||
var a = new QDialog(); | var a = new QDialog(); | ||
- | var layout = new QFormLayout(); | + | var layout = new QFormLayout(); |
- | a.setLayout(layout); | + | a.setLayout(layout); |
- | var tabIntRadio = [" | + | var tabIntRadio = [" |
- | var tabRadio = []; | + | var tabRadio = []; //Tableau les objets QRadioButton |
- | for (var i = 0; i < tabIntRadio.length; | + | for (var i = 0; i < tabIntRadio.length; |
- | tabRadio[i] = new QRadioButton(tabIntRadio[i]); | + | tabRadio[i] = new QRadioButton(tabIntRadio[i]); |
- | layout.addRow(tabRadio[i]); | + | layout.addRow(tabRadio[i]); |
- | tabRadio[i].toggled.connect(tabRadio[i], | + | tabRadio[i].toggled.connect(tabRadio[i], |
if (this.checked === true) | if (this.checked === true) | ||
Console.print(this.text); | Console.print(this.text); | ||
Ligne 480: | Ligne 532: | ||
== Signaux == | == Signaux == | ||
- | L' | + | Il y a le signal toggled, plus les signaux qu'il hérite de QWidget, comme clicked |
== Groupe de radiobutton == | == Groupe de radiobutton == | ||
Ligne 491: | Ligne 543: | ||
Ce widget a pour but l' | Ce widget a pour but l' | ||
+ | |||
+ | == Général && texte simple == | ||
<code javascript> | <code javascript> | ||
var a = new QDialog(); | var a = new QDialog(); | ||
- | var layout = new QFormLayout(); | + | var layout = new QFormLayout(); |
- | a.setLayout(layout); | + | a.setLayout(layout); |
var b = new QLabel(" | var b = new QLabel(" | ||
b.setText(b.text + " world" | b.setText(b.text + " world" | ||
- | layout.addRow(b); | + | b.minimumSize = new QSize(500, 500); //Gestion de sa taille, attention il est contenu dans un layout |
+ | b.maximumSize = new QSize(500, 500); | ||
+ | |||
+ | b.alignment = Qt.AlignBottom | Qt.AlignRight; | ||
+ | |||
+ | b.textInteractionFlags = Qt.TextSelectableByMouse; | ||
+ | |||
+ | layout.addRow(b); | ||
a.exec(); | a.exec(); | ||
</ | </ | ||
- | La méthode setText permet d' | + | {{ : |
+ | |||
+ | La méthode setText permet d' | ||
+ | |||
+ | La propriété text permet de le récupérer. | ||
+ | |||
+ | La propriété alignement attend un flag horizontal, vertical, ou les 2. | ||
+ | |||
+ | * **Horizontal** | ||
+ | |||
+ | * Qt.AlignLeft | ||
+ | * Qt.AlignRight | ||
+ | * Qt.AlignHCenter | ||
+ | * Qt.AlignJustify | ||
+ | |||
+ | * **Vertical** | ||
+ | |||
+ | * Qt.AlignTop | ||
+ | * Qt.AlignBottom | ||
+ | * Qt.AlignVCenter | ||
+ | |||
+ | Par défault, le texte est impossible à sélectionner, | ||
+ | |||
+ | * Qt.TextSelectableByMouse | ||
+ | * Qt.TextSelectableByKeyboard => La politique de focus du widget est forcé à Qt.ClickFocus | ||
+ | * Qt.LinksAccessibleByMouse | ||
+ | * Qt.LinksAccessibleByKeyboard => La politique de focus du widget est forcé à Qt.StrongFocus | ||
+ | |||
+ | == HTML == | ||
<code javascript> | <code javascript> | ||
var a = new QDialog(); | var a = new QDialog(); | ||
- | var layout = new QFormLayout(); | + | var layout = new QFormLayout(); |
- | a.setLayout(layout); | + | a.setLayout(layout); |
- | var b = new QLabel(" | + | var b = new QLabel(); //Affiche un QLabel |
- | b.setText(b.text + " | + | b.setText("< |
- | b.minimumSize = new QSize(500, 500); | + | layout.addRow(b); //Attribut le QLabel au layout |
- | b.maximumSize = new QSize(500, 500); | + | |
- | //b.indent = 150; | + | a.exec(); |
- | // | + | </code> |
- | layout.addRow(b); | + | {{ : |
+ | |||
+ | < | ||
+ | |||
+ | Vous remarquez qu'il ne se passe rien quand le lien est cliqué, de plus il est impossible de le sélectionner, | ||
+ | |||
+ | <code javascript> | ||
+ | b.textInteractionFlags = Qt.LinksAccessibleByMouse; | ||
+ | </ | ||
+ | |||
+ | A rajouter pour que le lien puisse être copié, mais ça vous le savez =) | ||
+ | |||
+ | <code javascript> | ||
+ | b.textInteractionFlags = Qt.LinksAccessibleByMouse | Qt.LinksAccessibleByKeyboard | Qt.TextSelectableByMouse; | ||
+ | </ | ||
+ | |||
+ | Si plusieurs flags... Au cas où =) | ||
+ | |||
+ | <code javascript> | ||
+ | b.openExternalLinks = true; | ||
+ | </ | ||
+ | |||
+ | Pour qu'il ne se passe pas rien lors d'un click sur le lien ! | ||
+ | |||
+ | <code javascript> | ||
+ | b.linkActivated.connect(function(link) { //Le signal linkActivated est émis lors de l' | ||
+ | var a = QDesktopServices; | ||
+ | a.openUrl(new QUrl(link)); | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | Ou comme ça aussi =) | ||
+ | |||
+ | La variable link est une chaine de caractère qui contient le lien activé. | ||
+ | |||
+ | Ok, si c'est juste pour ouvrir l'URL que vous avez mis dans le lien, le premier code suffit, mais si vous avez un esprit machiavélique, | ||
+ | |||
+ | Ceci dit, Actiona est aussi là pour vous soulager dans cette dur et noble tâche (l' | ||
+ | |||
+ | == Image == | ||
+ | |||
+ | <code javascript> | ||
+ | var a = new QDialog(); | ||
+ | a.setWindowTitle(" | ||
+ | |||
+ | var layout = new QFormLayout(); | ||
+ | a.setLayout(layout); | ||
+ | |||
+ | var b = new QLabel(); | ||
+ | b.setPixmap(new QPixmap(" | ||
+ | |||
+ | layout.addRow(b); | ||
a.exec(); | a.exec(); | ||
</ | </ | ||
+ | {{ : | ||
+ | |||
+ | Ici, rien de bien nouveau, ormis qu'au lieu d' | ||
+ | |||
+ | == image animé (GIF) == | ||
+ | |||
+ | <code javascript> | ||
+ | var a = new QDialog(); | ||
+ | a.setWindowTitle(" | ||
+ | |||
+ | var layout = new QFormLayout(); | ||
+ | a.setLayout(layout); | ||
+ | |||
+ | var b = new QLabel(); //Création d'un QLabel | ||
+ | var c = new QMovie(" | ||
+ | b.setMovie(c); | ||
+ | |||
+ | c.start(); //Lecture du gif | ||
+ | |||
+ | layout.addRow(b); | ||
+ | |||
+ | a.exec(); | ||
+ | </ | ||
+ | |||
+ | Pour ajouter un gif dans un QLabel, il faut utiliser la méthode setMovie, qui attend un objet QMovie en paramètre, lui même attendant le chemin du gif que vous voulez lire. | ||
+ | |||
+ | Ensuite il faut démarrer la lecture du gif avec la méthode start() appliqué au QMovie. | ||
+ | |||
+ | Il est possible de contrôler la lecture du gif avec certaines méthodes comme : | ||
+ | |||
+ | * **start** : Elle affiche et lance la lecture du gif. Il faut savoir que sans cette méthode le gif ne s' | ||
+ | * **stop** : Elle stop la lecture du gif, si start est lancé ensuite, le gif reprendra depuis le débuts | ||
+ | * **setPaused** // | ||
+ | * **jumpToFrame** //(int)// : Pour changer la frame affichée, retourne true si succès, sinon retourne false | ||
+ | * **jumpToNextFrame** : Pour passer à la frame suivante, retourne true si succès, sinon retourne false | ||
+ | |||
+ | Il est possible de régler la vitesse de lecture avec la propriété speed | ||
+ | |||
+ | <code javascript> | ||
+ | c.speed = 200; //x2 | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | </ | ||
+ | |||
+ | Il est cependant possible de récupérer ce nombre grâce au signal finished, qui est émis lorsque le gif est terminé. | ||
+ | |||
+ | Les différents signaux : | ||
+ | | ||
+ | <code javascript> | ||
+ | // | ||
+ | </ | ||
<note important> | <note important> |
fr/actionaz_qtscript.1412634491.txt.gz · Dernière modification : 2021/02/13 11:23 (modification externe)