rab*_*er7 3 c++ checkbox qt4 qtreewidget c++11
我正在编写一个具有QTreeWidget的应用程序,该QTreeWidget通过解析包含树级别的XML文件来填充.如果我选择顶级复选框,我还需要检查所有子级复选框.
我已经使用XML解析器工作并使用带有复选框的QTreeWidgetItems填充QTreeWidget,但它们只能单独检查.
为此,请保留您使用XML生成树的代码.然后连接到itemChanged()信号并更新插槽中的检查状态.它应该看起来像:
connect(treeWidget, SIGNAL(itemChanged(QTreeWidgetItem*, int)),
this, SLOT(updateChecks(QTreeWidgetItem*, int)));
void ClassName::updateChecks(QTreewidgetItem* item, int column)
{
// Checkstate is stored on column 0
if(column != 0)
return;
recursiveChecks(item);
}
void ClassName::recursiveChecks(QTreeWidgetItem* parent)
{
Qt::CheckState checkState = parent->checkState(0);
for(int i = 0; i < parent->childCount(); ++i)
{
parent->child(i)->setCheckState(0, checkState);
recursiveChecks(parent->child(i));
}
}
Run Code Online (Sandbox Code Playgroud)
需要考虑的几点注意事项: