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 00:39] – [Les boutons] 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 130: | Ligne 130: | ||
Dans cette exemple, la hauteur du bouton devient 100px et la largeur reste dynamique. | Dans cette exemple, la hauteur du bouton devient 100px et la largeur reste dynamique. | ||
- | Autre solution pour ne modifier que la hauteur ou la largeur... | + | |
+ | <note important> | ||
+ | |||
+ | Autre solution pour ne modifier que la hauteur ou la largeur... Ou les 2, qui fonctionne, que le widget à redimensionner soit placé dans un layout ou non. | ||
<code javascript> | <code javascript> | ||
Ligne 136: | Ligne 139: | ||
var b = new QPushButton(" | var b = new QPushButton(" | ||
- | b.minimumWidth = 200; | + | b.minimumWidth = 200; //Pour modifier la largeur |
b.maximumWidth = 200; | b.maximumWidth = 200; | ||
+ | |||
+ | b.minimumHeight = 200; //Pour modifier la hauteur | ||
+ | b.maximumHeight = 200; | ||
+ | |||
+ | b.minimumSize = new QSize(200, 200); //Pour modifier la largeur et la hauteur | ||
+ | b.maximumSize = new QSize(200, 200); | ||
a.exec(); | a.exec(); | ||
</ | </ | ||
- | Ici, b mesurera | + | <note important> |
* **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 174: | 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 181: | 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 237: | 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 266: | 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 288: | 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 309: | 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 421: | 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 444: | 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 469: | 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 480: | Ligne 543: | ||
Ce widget a pour but l' | Ce widget a pour but l' | ||
+ | |||
+ | == Général && texte simple == | ||
+ | |||
+ | <code javascript> | ||
+ | var a = new QDialog(); | ||
+ | |||
+ | var layout = new QFormLayout(); | ||
+ | a.setLayout(layout); | ||
+ | |||
+ | var b = new QLabel(" | ||
+ | b.setText(b.text + " world" | ||
+ | |||
+ | 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(); | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 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> | ||
+ | var a = new QDialog(); | ||
+ | |||
+ | var layout = new QFormLayout(); | ||
+ | a.setLayout(layout); | ||
+ | |||
+ | var b = new QLabel(); //Affiche un QLabel | ||
+ | b.setText("< | ||
+ | |||
+ | layout.addRow(b); | ||
+ | |||
+ | a.exec(); | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | < | ||
+ | |||
+ | 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(); | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 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.1412555980.txt.gz · Dernière modification : 2021/02/13 11:23 (modification externe)