问题描述
|
我赚了
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用于将父类强制转换为其子类之一。