如何从QListWidgetItem获取小部件

问题描述

| 我赚了
QListWidget
。在
QLisitWidgetItems
中,我加了
QVBoxLayout
QVBoxLayout
包含三个
QLabels
。单击click6ѭ时如何获取
QLabel
内的值 //创建列表视图项(三个QLabels)
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);

        }
    

解决方法

首先,您需要向LblNames添加方法以获取标签文本。 将3个Qlabel声明为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();
您应该将google用于此类用途。 dynamic_cast用于将父类强制转换为其子类之一。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...