QTableWidgetItem类没有数据成员,那它的数据保存在哪里呢

szyangzhen 2010-08-28 11:29:43
我在手册上看QTableWidgetItem类没有数据成员,只有方法和类型,那它的数据保存在哪里呢?我初学请教下各位
...全文
506 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
szyangzhen 2010-08-29
  • 打赏
  • 举报
回复
我意思是,qt参考手册列出的QTableWidgetItem的成员里面没有数据成员,如果用一个setData函数来设置数据,那这个数据保存哪了,该对象又没成员保存。

我们自己编写类不都会设个成员来保存数据么?
szyangzhen 2010-08-29
  • 打赏
  • 举报
回复
哦,明白了,谢谢各位
yanchong 2010-08-29
  • 打赏
  • 举报
回复
下面的是QTableWidgetItem,红色部分就是私有变量,楼主 QT助手里面的知识提供了借口具体的你可以去看qt的源文件,那里都有

class Q_GUI_EXPORT QTableWidgetItem
{
friend class QTableWidget;
friend class QTableModel;
public:
enum ItemType { Type = 0, UserType = 1000 };
QTableWidgetItem(int type = Type);
explicit QTableWidgetItem(const QString &text, int type = Type);
explicit QTableWidgetItem(const QIcon &icon, const QString &text, int type = Type);
QTableWidgetItem(const QTableWidgetItem &other);
virtual ~QTableWidgetItem();

virtual QTableWidgetItem *clone() const;

inline QTableWidget *tableWidget() const { return view; }

inline int row() const;
inline int column() const;

inline void setSelected(bool select);
inline bool isSelected() const;

inline Qt::ItemFlags flags() const { return itemFlags; }
void setFlags(Qt::ItemFlags flags);

inline QString text() const
{ return data(Qt::DisplayRole).toString(); }
inline void setText(const QString &text);

inline QIcon icon() const
{ return qvariant_cast<QIcon>(data(Qt::DecorationRole)); }
inline void setIcon(const QIcon &icon);

inline QString statusTip() const
{ return data(Qt::StatusTipRole).toString(); }
inline void setStatusTip(const QString &statusTip);

#ifndef QT_NO_TOOLTIP
inline QString toolTip() const
{ return data(Qt::ToolTipRole).toString(); }
inline void setToolTip(const QString &toolTip);
#endif

#ifndef QT_NO_WHATSTHIS
inline QString whatsThis() const
{ return data(Qt::WhatsThisRole).toString(); }
inline void setWhatsThis(const QString &whatsThis);
#endif

inline QFont font() const
{ return qvariant_cast<QFont>(data(Qt::FontRole)); }
inline void setFont(const QFont &font);

inline int textAlignment() const
{ return data(Qt::TextAlignmentRole).toInt(); }
inline void setTextAlignment(int alignment)
{ setData(Qt::TextAlignmentRole, alignment); }

inline QColor backgroundColor() const
{ return qvariant_cast<QColor>(data(Qt::BackgroundColorRole)); }
inline void setBackgroundColor(const QColor &color)
{ setData(Qt::BackgroundColorRole, color); }

inline QBrush background() const
{ return qvariant_cast<QBrush>(data(Qt::BackgroundRole)); }
inline void setBackground(const QBrush &brush)
{ setData(Qt::BackgroundRole, brush); }

inline QColor textColor() const
{ return qvariant_cast<QColor>(data(Qt::TextColorRole)); }
inline void setTextColor(const QColor &color)
{ setData(Qt::TextColorRole, color); }

inline QBrush foreground() const
{ return qvariant_cast<QBrush>(data(Qt::ForegroundRole)); }
inline void setForeground(const QBrush &brush)
{ setData(Qt::ForegroundRole, brush); }

inline Qt::CheckState checkState() const
{ return static_cast<Qt::CheckState>(data(Qt::CheckStateRole).toInt()); }
inline void setCheckState(Qt::CheckState state)
{ setData(Qt::CheckStateRole, state); }

inline QSize sizeHint() const
{ return qvariant_cast<QSize>(data(Qt::SizeHintRole)); }
inline void setSizeHint(const QSize &size)
{ setData(Qt::SizeHintRole, size); }

virtual QVariant data(int role) const;
virtual void setData(int role, const QVariant &value);

virtual bool operator<(const QTableWidgetItem &other) const;

#ifndef QT_NO_DATASTREAM
virtual void read(QDataStream &in);
virtual void write(QDataStream &out) const;
#endif
QTableWidgetItem &operator=(const QTableWidgetItem &other);

inline int type() const { return rtti; }

private:
int rtti;
QVector<QWidgetItemData> values;
QTableWidget *view;
QTableWidgetItemPrivate *d;
Qt::ItemFlags itemFlags;
};
szyangzhen 2010-08-29
  • 打赏
  • 举报
回复
为什么那个手册有的列出数据成员有的不列出有的列出,我开始也觉得是隐藏了成员,但有的又列出了数据成员,所以觉得迷惑
中才德创 2010-08-29
  • 打赏
  • 举报
回复
QPoint,也看不到它的两个int型数据成员,但不代表没有。只是对外提供接口,读写数据成员罢了。
这样的优点,可以避开直接操作数据成员的风险。

List of All Members for QPoint

This is the complete list of members for QPoint, including inherited members.

QPoint ()
QPoint ( int, int )
isNull () const : bool
manhattanLength () const : int
rx () : int &
ry () : int &
setX ( int )
setY ( int )
x () const : int
y () const : int
operator*= ( qreal ) : QPoint &
operator+= ( const QPoint & ) : QPoint &
operator-= ( const QPoint & ) : QPoint &
operator/= ( qreal ) : QPoint &
szyangzhen 2010-08-29
  • 打赏
  • 举报
回复
哪位出来解释下啊
lefttime 2010-08-28
  • 打赏
  • 举报
回复
作为可见的名称, 可以直接通过setText()来设置;
如果还想附带其它数据的话, 可以通过setData()设置~``

16,240

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧