向自定义QStandardItem添加子条目
Add child to custom QStandardItem
我有一个对象:
class Mando : public QObject, public QStandardItem {
Q_OBJECT
public:
std::string getDescription() const;
std::string getName() const;
explicit Mando(boost::filesystem::path filen);
private:
boost::filesystem::path file;
};
Q_DECLARE_METATYPE(Mando *)
Mando::Mando(boost::filesystem::path filen) {
file= filen; }
std::string Mando::getName() const {
return file.filename().string(); }
std::string Mando::getDescription() const {
return std::string("XxxxX"); }
和模型实现:
ContentModel::ContentModel() : QStandardItemModel() {
QStringList headers;
headers << tr("Name") << tr("Description");
setHorizontalHeaderLabels(headers);
setColumnCount(headers.count()); }
QVariant ContentModel::data(const QModelIndex &index, int role) const {
if(role == Qt::DisplayRole)
switch(index.column()) {
case 0: return static_cast<Mando*>(item(index.row()))->getName().c_str();
case 1: return static_cast<Mando*>(item(index.row()))->getDescription().c_str(); }
return QStandardItemModel::data(index, role); }
我这样添加对象:
model->appendRow(new Mando(boost::filesystem::path("/home/user/riri.ini")));
model->appendRow(new Mando(boost::filesystem::path("/home/user/fifi.ini")));
model->appendRow(new Mando(boost::filesystem::path("/home/user/loulou.ini")));
view= new QTreeView();
view.setModel(model);
一切正常,我得到:
riri.ini XxxxX
fifi.ini XxxxX
loulou.ini XxxxX
但是,在某些情况下,我需要添加一个子元素。
riri.ini XxxxX
-> riri's child YyyyY
fifi.ini XxxxX
loulou.ini XxxxX
-> loulou's child YyyyY
如果我在Mando实例中添加一个简单的行,像这样:
Mando::Mando(boost::filesystem::path filen) {
file= filen;
appendRow(new QStandardItem() /* or */ QList<QStandardItem*>); }
如何区分ContentModel::data中孩子的父亲?
要为项添加子元素,在该项上使用void QStandardItem::appendRow(QStandardItem * item)
。QStandardItem
也有child()
和parent()
方法,这将帮助您确定是否有父母/孩子。QModelIndex
类也是如此,因此它还可以帮助您确定是否有与索引相关的子或父节点。
相关文章:
- 添加自定义析构函数时,Move 构造函数在派生类中消失
- 如何在自定义对象的<<运算符中添加自定义前缀
- 如何添加自定义关键字以 clang 格式被视为"class"?
- 为C /CLI中的所有请求添加自定义的标头到WebBrowser控件
- 如何使用 word 对象模型中的C++接口在 word 中添加自定义 XML 艺术
- 如何在Boost Graph库中的Grid_graph的边缘添加自定义属性
- 当我添加自定义比较器时,无法插入新元素以设置
- 如何在Tensorflow Lite中添加自定义运算符
- cmake 如何在项目的 vcxproj 属性组中添加自定义条目?
- C 添加自定义XML标签,用于序列化对向量
- 如何在QT中添加自定义应用程序
- 在运行时添加自定义Qwidget
- 如何在Qt中添加自定义类处理功能
- 我可以添加自定义 #pragma 规则吗?
- BOOST _CHECK_EQUAL(和dervatives)添加自定义消息
- 正在添加自定义邮件头
- 如何在Qt Creator项目向导中添加自定义构建步骤
- 在Visual Studio 2010中为项目添加自定义图标
- 如何在boost图中添加自定义边缘标签
- 在microtik Winbox的注册表编辑器中添加自定义协议