【发布时间】:2015-10-11 06:58:44
【问题描述】:
我正在尝试实现一些我认为很容易但不知道如何让它发挥作用的东西。
在这个基本示例中,我正在创建一个地址簿,一个人可以分成 2 个组,John Doe 是朋友,也是工作同事。
如果我在朋友组中更改了他的电话号码,它也应该在工作组中更改。
这是我第一次尝试使用静态内容的方式(最后它链接到一个数据库)
addressBookListModel = new QStandardItemModel(0, 4);
addressBookListModel->setHeaderData(0,Qt::Horizontal,"First Name", Qt::DisplayRole);
addressBookListModel->setHeaderData(0,Qt::Horizontal,"fn", Qt::UserRole);
addressBookListModel->setHeaderData(1,Qt::Horizontal,"Last Name", Qt::DisplayRole);
addressBookListModel->setHeaderData(1,Qt::Horizontal,"ln", Qt::UserRole);
addressBookListModel->setHeaderData(2,Qt::Horizontal,"E-Mail", Qt::DisplayRole);
addressBookListModel->setHeaderData(2,Qt::Horizontal,"mail", Qt::UserRole);
addressBookListModel->setHeaderData(3,Qt::Horizontal,"Phone Number", Qt::DisplayRole);
addressBookListModel->setHeaderData(3,Qt::Horizontal,"phone", Qt::UserRole);
然后插入数据:
//Group 1
QStandardItem * work = new QStandardItem("Work");
QList<QStandardItem*> workgroup;
workgroup << work ;
addressBookListModel->appendRow(workgroup);
//group 2
QStandardItem * friends = new QStandardItem("Friends");
QList<QStandardItem*> friendgroup;
friendgroup << friends ;
addressBookListModel->appendRow(friendgroup);
//One contact in both groups
QStandardItem * fn = new QStandardItem("John");
QStandardItem * ln = new QStandardItem("Doe");
QStandardItem * mail = new QStandardItem("john.doe@gmail.com");
QStandardItem * phone = new QStandardItem("+123456789");
QList<QStandardItem*> rowitems;
rowitems << fn << ln << mail << phone;
work->appendRow(rowitems);
friends->appendRow(row items);
但这只会在这样的工作中插入 john doe:
我以为这是因为行项目不是指针,所以我这样尝试:
//One contact in both groups 2
QStandardItem * fn = new QStandardItem("John");
QStandardItem * ln = new QStandardItem("Doe");
QStandardItem * mail = new QStandardItem("john.doe@gmail.com");
QStandardItem * phone = new QStandardItem("+123456789");
QList<QStandardItem*> rowitems;
rowitems << fn << ln << mail << phone;
QList<QStandardItem*> rowitemsB;
rowitemsB << fn << ln << mail << phone;
work->appendRow(rowitems);
friends->appendRow(rowitemsB);
但这给了我完全相同的结果,John Doe 没有出现在 Friends 中,尽管在这两种情况下,都有一个箭头表示存在一个孩子。
任何想法如何使相同的数据出现两次?
【问题讨论】:
-
如果您插入第二个具有不同名字的项目会发生什么?
-
@jpo38 好主意,我试过了,把 jane,Jane 出现了但是其他列是空的,好像一个 qstandarditem 只能出现一次