QListWidgetItem包含2个数据:图标和文本。我想在其中存储另一个QString。我能怎么做?这是我的测试代码。在调用addItem之后,ListWidget不会显示任何内容。

我怎么知道点击了哪个项目? SLOT函数是“void on_listWidget_itemClicked(QListWidgetItem *项目)”。显然,参数项是父类:QListWidgetItem,而不是子类:ListWidgetItem

ListWidgetItem::ListWidgetItem(const QIcon &icon, const QString &text,QString &ip, QListWidget *parent, int type)
{
    myip = ip;
    QListWidgetItem::QListWidgetItem(icon,text,parent,type);
}

ListWidgetItem::~ListWidgetItem()
{

}

QVariant ListWidgetItem::data(int role) const
{
    if (role==IPROLE)
    {
        return myip;
    }
    return QListWidgetItem::data(role);
}

void ListWidgetItem::setData(int role, const QVariant &value)
{
    if (role==IPROLE)
    {
        myip = value.toString();
    }
    QListWidgetItem::setData(role,value);
}

最佳答案

QListWidgetItem具有成员函数

void QListWidgetItem::setData ( int role, const QVariant & value )


QVariant QListWidgetItem::data ( int role ) const

用于存储任意数据(包括QString)。设置role = Qt::UserRole(或任何更高的值)。

关于qt - 用额外的数据自定义QListWidgetItem来存储,如何?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5868336/

10-12 17:23