1 pièce(s) jointe(s)
Remonter du modèle à la QCombobox
Bonjour à tous,
Je n'arrive pas à remonter à mon QComboBox à partir de mon model.
Pièce jointe 149871
Je m'explique j'ai codé une fonction qui rajoute un model de Checkbox à une combobox (code simplifié):
Code:
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);
} |
J'arrive à récupérer le signal et savoir sur quelle checkbox l'utilisateur a cliqué avec cette fonction :
Code:
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);
}
}
} |
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.
Vous pensez que c'est possible ou faut-il que je fasse différemment ?
Merci