9
votes

Créer une matrice de widget à l'aide de QT Designer?

dans QT Designer Je crée plusieurs étiquettes (par exemple): xxx pré>

alors si je veux les cacher, je fais cela: P>

QLabel* my_label[5];


1 commentaires

Veuillez placer des réponses dans les blocs de réponse. Plus tard, vous pouvez accepter votre propre réponse. Voir aussi Comment accepter un travail de réponse?


4 Réponses :


0
votes

Je n'ai rien vu dans qtdesigner pour faire cela, mais il y a un couple de moyens relativement faciles d'obtenir ce comportement.

1) stocke simplement les pointeurs My_Labelx (de QTDesigner) dans un tableau (ou mieux, un qvecteur): xxx

alors vous pouvez itérer via le qvecteur. xxx

Il y a un peu de configuration nécessaire en termes d'ajouter toutes les étiquettes au qvecteur, mais sur le côté plus, vous ne faites qu'une fois.

2) En fonction de la mise en page de votre interface graphique, vous pouvez avoir toutes vos étiquettes être des enfants d'un objet de conteneur et itérer à travers les enfants


0 commentaires

3
votes

Au lieu de créer une matrice explicite, vous pourrez peut-être nommer vos widgets à l'aide d'un schéma particulier, puis utiliser QObject :: FindChildRen () sur le widget parent Pour obtenir une liste des widgets que vous êtes après.

Si vous voulez seulement masquer les widgets, vous pouvez mettre tous les widgets que vous souhaitez masquer dans une invisible QFRAME (SET FRAMESHAPE TO NOFRAME ) et les masque tout en appelant SETVISIBLE (FALSE) sur le Qframe . Cela peut entraîner des effets secondaires indésirables avec des mises en page afin que vous puissiez avoir à modifier certains paramètres de stratégie de taille.

Si vous souhaitez masquer des contrôles afin que vous puissiez simuler un interface utilisateur de type assistant, vous voudrez peut-être vérifier dans Qstackedwidget .


3 commentaires

Arnold: Merci de votre réponse! Mais compte tenu de mes connaissances de base QT, j'ai finalement fait une mission directe. D'ailleurs, je devais faire plus que simplement cacher. Quoi qu'il en soit, j'apprécie vraiment votre aide.


J'ai pensé que la cachette n'était pas votre seul objectif :) Vous pouvez mettre votre propre réponse et l'accepter. Cela évitera les résultats de la recherche pour les questions sans réponse.


Je viens d'essayer, cependant, depuis que je suis moins de 100 réputation, je dois attendre trois heures de plus pour le faire. Merci encore!



5
votes

Enfin j'ai décidé de faire une mission directe: xxx

puis je peux faire par exemple: xxx

puis j'ai pu effectuer itérations. Je pense que ce n'est pas le moyen le plus propre de le faire, mais donné que mes connaissances fondamentales de qt sont ok pour moi.

Merci beaucoup pour vos réponses et votre soutien! C'est un excellent site avec des gens formidables.


0 commentaires

1
votes

J'ai une autre solution de contournement sale pour cela:

dans le fichier d'en-tête p> xxx pré>

dans le fichier source p>

// constructor
ui->setupUi(this);

labels = new QLabel*[10]{ui->label_0, ui->label_1, ui->label_2, ui->label_3,
                         ui->label_4, ui->label_5, ui->label_6, 
                         ui->label_7, ui->label_8, ui->label_9};


0 commentaires