如何从QListWidgetItem获取微件 [英] how to get a widget from QListWidgetItem

查看:17
本文介绍了如何从QListWidgetItem获取微件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我做了一个QListWidget。在QLisitWidgetItems中,我添加了QVBoxLayout。<2-2]>包含三个QLabels。如何在单击QListWidgetItem时获取QLabel内的值

//创建列表视图项(三个QLabel)

Lblnames::Lblnames(QString strid,QString strname,QString strmob,QWidget *parent)
        : QWidget(parent)
    {
        QLabel *lblid=new QLabel(strid);
        QLabel *lblname=new QLabel(strname);
        QLabel *lblnumber=new QLabel(strmob);

        lblid->setFont(QFont("Times", 1));
        lblname->setFont(QFont("Times", 12, QFont::Bold));

        lblid->hide();

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(lblid);
    layout->addWidget(lblname);
    layout->addWidget(lblnumber);
    setLayout(layout);
}

//创建列表

listWidget=new QListWidget();
    for(int i=0;qry.next();i++)
    {
        qDebug()<<QString("%1").arg( qry.value(1).toString());
        Lblnames *lblnames = new Lblnames(QString("%1").arg( qry.value(0).toString()),QString("%1").arg( qry.value(1).toString()),QString("%1").arg( qry.value(2).toString()));
        item = new QListWidgetItem();
        item->setSizeHint(QSize(0,60));
        item->setFont(QFont("Arial", 1));
        listWidget->addItem(item);
        listWidget->setItemWidget(item,lblnames);

        }

推荐答案

首先需要向LblName添加方法以获取标签文本。然后 将3个QLabels声明为LblNames类的成员变量。

QString LblNames::getLabelId()
{
    return lblid->text();
}

 
QListItemWidget* item = listWidget->itemAt(index);
LblNames* widget = dynamic_cast<LblNames*>( listWidget->itemWidget(item) );
widget->getLabelId();/*Add these to LblNames class first*/
widget->getLabelText();

你应该使用谷歌来做这些事情。DYNAMIC_CAST用于从超类强制转换为其子类之一。

这篇关于如何从QListWidgetItem获取微件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆