【QT】Item中添加控件

功能截图:

在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);
    }
  }
}

猜你喜欢

转载自blog.csdn.net/m0_37557014/article/details/73251108