как получить виджет из QListWidgetItem - PullRequest
3 голосов
/ 23 мая 2011

Я сделал QListWidgetQLisitWidgetItems я добавил QVBoxLayout.Это QVBoxLayout содержит три QLabels.Как получить значения внутри QLabel при нажатии QListWidgetItem

// создание элементов представления списка (три 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);

        }

1 Ответ

0 голосов
/ 23 мая 2011

сначала вам нужно добавить методы в LblNames для извлечения текста метки. Затем Объявите 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();

Вы должны использовать Google для таких вещей. dynamic_cast используется для приведения из суперкласса к одному из его подклассов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...