2017-07-15 1 views
1
class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 
public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 

private: 
    Ui::MainWindow *ui; 
    MyFileSystemModel model; 
}; 

Mon fichier cppComment puis-je implémenter la sélection multiple dans Qt dans TreeView lorsque l'utilisateur détient la touche CTRL sur le clavier?

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    model.setRootPath(QDir::rootPath()); 

    ui->treeView->setModel(&model); 
    ui->treeView->setSelectionMode(QAbstractItemView::MultiSelection); 
    ui->treeView->setDragEnabled(true); 
} 

J'utilisé la propriété MultiSelection, mais il ne fonctionne que lorsque je clique sur les éléments de TreeView avec la souris, je ne veux pas sélectionner quelques éléments sans appuyer sur CTRL sur le clavier . Comment puis-je vérifier si l'utilisateur a appuyé sur CTRL et ensuite sélectionner des éléments?

+0

Je pense qu'il existe un mode ExtendedSelection pour cela. Huh –

Répondre

0

QTreeview a une fonction virtuelle pour définir le mode de sélection.

Vous pouvez définir le mode MultiSelection comme ceci:

QTreeView treeView; 
treeView.setSelectionMode(QAbstractItemView::MultiSelection); 

également pour Multisélection avec ctrl Utilisez cette touche:

QTreeView treeView; 
treeView.setSelectionMode(QAbstractItemView::ExtendedSelection); 

plus d'informations sur QTreeView here.

+0

J'ai écrit, que j'ai déjà essayé, mais je veux MultiSelection seulement quand j'ai appuyé sur la touche CTRL – VVcvcv

+0

merci pour votre réponse, cela fonctionne parfaitement! – VVcvcv

+0

@VVcvcv Pas de problème. si cela a été utile, acceptez ma réponse, merci. – aghilpro