QLlistwidget 自定义item 并获取 item上的内容

如上面这个界面 ,添加一个自定义 item(第一行)

1. 自定义item   

// 在item中添加一个lable 和 按钮
QWidget *widget1 = new QWidget(ui->listWidget);
QHBoxLayout *layout = new QHBoxLayout(widget1);
QLabel *lab1 = new QLabel(widget1);
QLabel *lab2 = new QLabel(widget1);
layout->addWidget(lab1);
layout->addWidget(lab2);
layout->addWidget(btn1);
lab1->setText(str);
lab2->setText("aaa");
btn1->setObjectName(QStringLiteral("button1"));   // 设置按钮名称
lab1->setObjectName(QStringLiteral("label1"));   // 设置label名称
lab2->setObjectName(QStringLiteral("label2"));  // 设置label名称
btn1->setText(tr("测试按钮"));
widget1->setLayout(layout);

// 添加自定义的item
QListWidgetItem *aItem = new QListWidgetItem(ui->listWidget);
ui->listWidget->addItem(aItem);
aItem->setSizeHint(QSize(0,50));
ui->listWidget->setItemWidget(aItem,widget1);

2. 用鼠标" 单击" 获取自定义控件的信息

核心:   

1.  通过选中的item,  获取里面的QWidget

   QWidget* pwig = ui->listWidget->itemWidget(item); 

2.  从得到的widget上的找到需要的子控件 

     方法一:    QList<QLabel*> labelList = pwig->findChildren<QLabel*>();   

     方法二:    QLabel * label = pwig->findChild<QLabel *>("label2");

void ListWidgetTest::on_listWidget_itemClicked(QListWidgetItem *item)
{
    QWidget* pwig = ui->listWidget->itemWidget(item);  // 获取里面的QWidget

    if (pwig != NULL)
    {
        // 方法一  获取所有
        QList<QLabel*> labelList = pwig->findChildren<QLabel*>();  // 获取所有的Qlabel
        foreach(QLabel *label, labelList)
        {
            qDebug()<< label->text();

            if(label->objectName() == "label1")
                ui->checkText->setText(label->text());   // 获取表中的值
        }

        // 方法二 findChild获取一个,如果不带参数返回第一个子控件
        QLabel * label =  pwig->findChild<QLabel *>("label2");   
        ui->checkText->setText(label->text());   // 获取表中的值
    }
    else
        ui->checkText->setText(item->text());   // 获取表中的值

    // 修改里面的内容
//     QLabel * label =  pwig->findChild<QLabel *>();   // 只有一个label 可以用 findchild
//     label->setText(tr("内容已修改"));
}

 

 

 

 

  • 19
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值