功能截图:
在treewidget控件里显示了指定路径内的所有指定格式文件名,CheckBox控件可勾选:
按下actionslot后,应用程序输出选中的文件名:
代码实现:
1、根据制定的文件目录和指定的文件格式筛选出某些文件,使用QStringList类型存储:
QDir dir("C:/Users/Maggie/Downloads");
QStringList filters;
filters<<"*.jpg"<<"*.png";
QStringList filename=dir.entryList(filters);
2、在treewidget中添加item,在item中设置text为name、添加CheckBox控件
for(int i=0;i<filename.size();i++)
{
QString name=filename[i];
QTreeWidgetItem *item=new QTreeWidgetItem();
item->setText(1,name);
ui->treeWidget->addTopLevelItem(item);
QCheckBox *checkbox=new QCheckBox();
ui->treeWidget->setItemWidget(item,0,checkbox);
}
3、actionSlot的事件处理:
connect(ui->actionSlot,SIGNAL(triggered()),this,SLOT(Onslot()));
4、Onslot函数:
void MainWindow::Onslot()
{
int row=ui->treeWidget->topLevelItemCount();
for(int i=0;i<row;i++) //遍历所有的treewidget中的所有item,判断CheckBox是否被勾选
{
QTreeWidgetItem *item=ui->treeWidget->topLevelItem(i);
QWidget *widget= ui->treeWidget->itemWidget(item,0);
QCheckBox *checkbox=(QCheckBox *)widget;
if(checkbox->isChecked())
{
qDebug()<<item->text(1);
}
}
}