Qt - How to associate data with QTableWidgetItem?

前端 未结 2 1280
抹茶落季
抹茶落季 2021-02-15 23:56

I want to associate additional data with each QTableWidgetItem inserted into the table, in order to use that data in future, when it is being clicked on a table item. But that d

相关标签:
2条回答
  • 2021-02-16 00:33

    You could derive from QTableItem and provide your own data member, or you could use the QTableView with your own model.

    0 讨论(0)
  • 2021-02-16 00:51

    You can use QTableWidgetItem::setData() like so:

    setData(Qt::UserRole, myData); // set
    

    Where myData is a supported QVariant type. You can use QTableWidgetItem::data() to retrieve the value that you store.

    If you need more than one you can use Qt::UserRole + 1, + 2, and so on (Qt::UserRole is "The first role that can be used for application-specific purposes.", you can read more about the other types of roles here).

    If you're storing a custom type that isn't natively supported by QVariant you will need to register your type with the Qt meta-object system. Look at QMetaType for more details on that.

    If you wanted to store an integer, for example:

    QTableWidgetItem* widgetItem = tableWidget->item(row, col); // get the item at row, col
    int myInteger = 42;
    widgetItem->setData(Qt::UserRole, myInteger);
    // ...
    myInteger = widgetItem->data(Qt::UserRole);
    
    0 讨论(0)
提交回复
热议问题