2010-07-01 8 views
2

http://img804.imageshack.us/img804/4258/uisketch.pngQT: l'utilisateur sélectionne des actions

Bonjour, Je suis en train de faire une une interface utilisateur, comme dans l'image d'esquisse (prévention du spam m'a fait poste que le lien). Quel devrait être le type de boîtes? QListView (les boîtes devraient être défilantes)? J'ai essayé cela, mais je ne pouvais pas ajouter d'action aux "actions disponibles". J'ai essayé de jouer avec QAction, mais rien ne semble fonctionner. En fait, les actions n'ont pas besoin de faire quoi que ce soit, car les numéros d'action de boîte sélectionnés et déplacés ne doivent être écrits que dans un fichier texte. je besoin d'aide pour:.

  1. fonction d'écriture, qui sera exécuté sur le début du programme (qui « remplir » la liste des actions disponibles
  2. Rédaction d'une fonction, qui sera exécutée, lorsque l'utilisateur CONFIRME, qu'il a fait sa sélection (seules les actions numéros doivent être enregistrés dans un fichier texte dans l'ordre que l'utilisateur choisi)

Je suppose que je pourrais moi-même fonction write gestionnaire de bouton; Merci beaucoup à l'avance, et Excusez-moi, si mon anglais est mauvais

EDIT: toute l'action se passe dans un widget de tabulation

+0

S'il vous plaît décrire le problème des mots ou ajouter l'image ici - celui qui est lié ne fonctionne pas plus! – codeling

Répondre

2

Utilisez deux QListWidgets, renseignez la gauche un à l'aide QListWidget::addItem, connectez le clicked() signal de votre QPushButton à un emplacement de votre choix, ce qui pourrait ressembler à ceci:

void myButtonClicked() 
{ 
    // retrieve currently selected item 
    QListWidgetItem *current = availableActionsList->currentItem(); 
    if(!current) 
     return; 
    // remove item from available actions and add it to selected actions 
    selectedActionsList->addItem(availableActionsList->takeItem(current)); 
} 

J'espère que cela aide.

EDIT: Si vous ne souhaitez pas supprimer l'élément, vous pouvez remplacer simplement les deux dernières lignes avec selectedActionsList->addItem(current->text());

+0

Merci, mais j'ai oublié de mentionner, comme dans le croquis de l'interface utilisateur, l'action n'a pas besoin d'être retiré de la liste disponible. –

+0

En ce qui concerne le mact, il doit être sélectionné (ajouté à la zone des éléments sélectionnés) autant de fois que l'utilisateur le souhaite. Pourriez-vous me donner un exemple? –

+0

@EdgeLuxe: J'ai mis à jour ma réponse avec un exemple pour votre comportement désiré. –

0

Ceci est l'un des moyens d'utiliser QListWidget.

La réponse à votre première question est la suivante:

Dans le constructeur de votre widget/Dialog qui contient votre QListWidget, ajouter des articles à travers

void QListWidget::addItems (const QStringList & labels) 

ou

void QListWidget::addItem (const QString & label) 

selon ce qui est désiré .

Pour la seconde, vous pouvez utiliser la fonction suivante pour obtenir les éléments sélectionnés.

QList<QListWidgetItem *> QListWidget::selectedItems() const 

Puis dans le signal clicked() du FlècheQPushbutton (Je suppose), ajouter les éléments sélectionnés dans l'autreQListWidget en utilisant les fonctions données pour la première réponse.

Hope it helps ..

+0

Merci, m'a beaucoup aidé. –

0

Comme écrit dans le documentation, QListView fait partie du cadre modèle/vue. Assurez-vous d'avoir associé un modèle à la vue et ajoutez l'action au modèle. Si vous ne souhaitez pas utiliser le framework de modèle/de vue, vous pouvez utiliser la classe QListWidget au lieu de QListView.