您的位置:首页 > 编程语言 > Qt开发

Qt 界面数据的存取

2017-08-01 16:12 155 查看
参考:Qt之界面数据存储与获取

常用函数

// 注:凡是 QObject 的子类都可以使用 setUserData() 和 userData()

// 存
setData()
setItemData()
setUserData()

// 取
data()
itemData()
userData()


自定义类型注册为 QVariant

// 用户信息
struct User : QObjectUserData {
int iD;        // ID
QString name;  // 用户名
};

//注册后可被 QVariant 接收
Q_DECLARE_METATYPE(User)


用法

定义用户数据类型

// 在头文件中定义结构体
struct User : QObjectUserData
{
int iD;  // ID
QString name;  // 用户名
};


传入用户数据

User *user = new User();
user->iD = 1;
user->name = "Qter";

QPushButton *pButton = new QPushButton(this);

//传入第一个用户数据
pButton->setUserData(Qt::UserRole, user);
//传入第二个用户数据
pButton->setUserData(Qt::UserRole+1, user);

// 关联解析用户数据的槽函数
connect(pButton, &QPushButton ::clicked, this, &MainWindow::onBtnClicked);


获取用户数据

void MainWindow::onBtnClicked()
{
// 获取发送者
QObject *pObject = this->sender();
QPushButton *pButton = qobject_cast<QPushButton *>(pObject);

// 获取第一个用户数据
User *pUser = (User *)(pButton->userData(Qt::UserRole));

qDebug() << "ID : " << pUser->nID;
qDebug() << "Name : " << pUser->strName;

// 获取第二个用户数据
pUser = (User *)(pButton->userData(Qt::UserRole + 1));
qDebug() << "ID : " << pUser->nID;
qDebug() << "Name : " << pUser->strName;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Qt 界面 数据存储