关于QListWidget自定义Item的学习

直接上代码,

        QListWidget *listWidget = new QListWidget;
        QWidget *widget = new QWidget;
        QListWidgetItem *item = new QListWidgetItem(listWidget );
        listWidget->addItem(nitem);
        nitem->setSizeHint(QSize(0,50));
        ui->listWidget->setItemWidget(nitem,widget);

上面的代码是实现将widget设置为listWidget的Item,
需要对item自定义的话,直接重新封装一个继承于QWidget的类就可以了,下面贴出我的相关代码,供参考:


ProjectDialog::ProjectDialog(QString path,QWidget *parent) :
    QDialog(parent),
    ui(new Ui::ProjectDialog)
{
    ui->setupUi(this);

    //获取所有的文件夹
    QDir dir(path);
    m_path = path;
    dir.setFilter(QDir::Dirs);

    foreach(QFileInfo fullDir, dir.entryInfoList())
    {
        if(fullDir.fileName() == "." || fullDir.fileName() == "..") continue;

        QWidget *widget = createItemWidget(fileName);
        QListWidgetItem *item = new QListWidgetItem(ui->listWidget);
        ui->listWidget->addItem(item);
        item->setSizeHint(QSize(0,50));
        ui->listWidget->setItemWidget(item,widget);
    }
}

ProjectDialog::~ProjectDialog()
{
    delete ui;
}

QWidget *ProjectDialog::createItemWidget(QString projectName)
{
    QFont font;
    font.setPixelSize(18);

    QWidget *widget = new QWidget;
    widget->setMinimumHeight(40);
    QHBoxLayout *layout = new QHBoxLayout(widget);


    QLabel *lab_name = new QLabel(this);
    lab_name->setMinimumHeight(30);
    lab_name->setFont(font);
    lab_name->setText(QStringLiteral("名称:"));

    QLabel *lab_projectName = new QLabel(widget);
    lab_projectName->setStyleSheet("border-width: 1px;border-style: solid;border-color: rgb(0, 0, 0);");
    lab_projectName->setText(projectName);
    lab_projectName->setAlignment(Qt::AlignCenter);
    lab_projectName->setMinimumSize(120,30);
    lab_projectName->setFont(font);


    QToolButton *btn_info = new QToolButton(widget);
    btn_info->setMinimumSize(60,30);
    btn_info->setText(QStringLiteral("文件详情"));
    btn_info->setToolTip(QStringLiteral("文件详情"));
    btn_info->setFocusProxy(this);
    btn_info->setFont(font);


    QToolButton *btn_selected = new QToolButton(widget);
    btn_selected->setMinimumSize(60,30);
    btn_selected->setText(QStringLiteral("选择"));
    btn_selected->setToolTip(QStringLiteral("选择"));
    btn_selected->setFont(font);


    QToolButton *btn_export = new QToolButton(widget);
    btn_export->setMinimumSize(60,30);
    btn_export->setText(QStringLiteral("导出到U盘"));
    btn_export->setToolTip(QStringLiteral("导出到U盘"));
    btn_export->setFont(font);


    layout->addWidget(lab_name,0,Qt::AlignCenter);
    layout->addWidget(lab_projectName,0,Qt::AlignCenter);
    layout->addWidget(btn_info,0,Qt::AlignCenter);
    layout->addWidget(btn_selected,0,Qt::AlignCenter);
    layout->addWidget(btn_export,0,Qt::AlignCenter);

    widget->setLayout(layout);
    return widget;
}

这里面的createItemWidget函数返回一个QWidget类指针,可以直接使用,一般最好还是封装一个Widget类比较好点,这样相对来说灵活点。

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庐州李大爷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值