Bonjour à tous,
Je n'arrive pas à remonter à mon QComboBox à partir de mon model.
Je m'explique j'ai codé une fonction qui rajoute un model de Checkbox à une combobox (code simplifié):
J'arrive à récupérer le signal et savoir sur quelle checkbox l'utilisateur a cliqué avec cette fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 ui -> cbCountry -> setModel(InsertCheckBox("Countries", qlist_Countries)); QAbstractItemModel *MainWindow::InsertCheckBox(QString qs_Title, QStringList qsl_Values) { QStandardItemModel* model = new QStandardItemModel(2, 1); QStandardItem* itemTitle = new QStandardItem(qs_Title); model -> setItem(0, 0, itemTitle); QStandardItem* itemSelectAll = new QStandardItem("Select All"); itemSelectAll -> setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); itemSelectAll -> setData(Qt::Unchecked, Qt::CheckStateRole); model -> setItem(1, 0, itemSelectAll); QStandardItem* itemUnSelectAll = new QStandardItem("UnSelect All"); itemUnSelectAll -> setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); itemUnSelectAll -> setData(Qt::Unchecked, Qt::CheckStateRole); model -> setItem(2, 0, itemUnSelectAll); for (int i = 0; i < qsl_Values.count(); i++) { QStandardItem* item = new QStandardItem(qsl_Values[i]); item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); item->setData(Qt::Unchecked, Qt::CheckStateRole); model->setItem(i + 4, 0, item); } connect(model, SIGNAL(dataChanged (const QModelIndex&, const QModelIndex&)), this, SLOT(slot_changed(const QModelIndex&))); return (model); }
Mais voilà quand j'applique cette fonction à une autre ComboBox je ne peux plus me permettre d'utiliser ui -> cbCountry dans slot_changed. C'est pourquoi j'aimerais à partir de mon QModelIndex remonter à ma ComboBox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 void MainWindow::slot_changed(const QModelIndex& model) { QComboBox* cb = model.parent(); // Select All if (model.row() == 1) { if (ui -> cbCountry -> itemData(model.row(),Qt::CheckStateRole).toBool()) { ui -> cbCountry -> setItemData(2, Qt::Unchecked, Qt::CheckStateRole); for (int i = 4; i < ui -> cbCountry -> count(); i++) { ui -> cbCountry -> setItemData(i, Qt::Checked, Qt::CheckStateRole); } } else { ui -> cbCountry -> setItemData(model.row(), Qt::Checked, Qt::CheckStateRole); } } }
Vous pensez que c'est possible ou faut-il que je fasse différemment ?
Merci
Partager