He creado una casilla de verificación que también es QTreeWidgetItem usando el siguiente código.¿Es posible crear una señal para cuando se active una casilla de verificación QTreeWidgetItem?
//Populate list
QTreeWidgetItem *program = createCheckedTreeItem(QString::fromStdString(itr->first), true);
treePrograms->addTopLevelItem(program);
QTreeWidgetItem* ConfigDialog::createCheckedTreeItem(QString name,bool checkBoxState)
{
QTreeWidgetItem *item = new QTreeWidgetItem(QStringList(name));
item->setFlags(item->flags()|Qt::ItemIsUserCheckable);
if (checkBoxState)
{
item->setCheckState(0,Qt::Unchecked);
}
else
{
item->setCheckState(0,Qt::Checked);
}
return item;
}
I necesita una manera de conectar una señal y ranura para cuando se cambia el estado de esta casilla de verificación. La forma actual en que lo he implementado es la siguiente, pero desafortunadamente no funciona. ¿Puede alguien explicar qué estoy haciendo mal y qué debo hacer para que se conecte?
connect(program, SIGNAL(toggled(bool)), this, SLOT(programChecked(bool)));
Esto es incorrecto. QTreeWidget no tiene un modelo de usuario. –
@GHuxley Pero aún puede conectarse al modelo predeterminado subyacente de QTreeWidget, p. Ej. 'treeWidget.model(). dataChanged.connect (handle_dataChanged)'. No estoy seguro de si esto es mejor que simplemente conectarme a 'itemChanged', pero parece similar. – blah238