QStandardItemModel中带有自定义数据的空行
Empty lines in QStandardItemModel with custom data
标题是好的,但我只有三个空行。
方法FileConfig::data永远不会被调用!
你知道为什么吗?
model= new MyModel;
model->setHeaderData(0, Qt::Horizontal, tr("Title"));
model->setHeaderData(1, Qt::Horizontal, tr("Direcory"));
model->setHeaderData(2, Qt::Horizontal, tr("Date"));
model->invisibleRootItem()->setChild(0, new FileConfig("/home/user/dir/riri.conf"));
model->invisibleRootItem()->setChild(1, new FileConfig("/home/user/dir/fifi.conf"));
model->invisibleRootItem()->setChild(2, new FileConfig("/home/user/dir/loulou.conf"));
proxy= new QSortFilterProxyModel(this);
proxy->setSourceModel(model);
view= new QTreeView;
view->setModel(proxy);
MyModel继承自QStandardItemModel,暂时为空。
我的自定义类:
class FileConfig : public QStandardItem {
public:
std::string getFileName() const;
std::string getFileDirectory() const;
std::string getDate() const;
FileConfig(const char *fileconfig);
virtual QStandardItem *clone() const;
virtual QVariant data(const QModelIndex &index, int role= Qt::DisplayRole) const;
private:
boost::filesystem::path file;
};
FileConfig::FileConfig(const char *fileconfig) : QStandardItem() {
file= boost::filesystem::path(fileconfig);
}
QVariant FileConfig::data(const QModelIndex &index, int role) const {
if(role == Qt::DisplayRole)
switch(index.column()) {
case 0: return getFileName().c_str();
case 1: return getFileDirectory().c_str();
case 2: return getDate().c_str(); }
return QVariant();
}
当您向模型添加新项目时,尝试使用appendRow
代替setChild
。例如:
model->invisibleRootItem()->appendRow(new FileConfig(/*path*/));
编辑:您还需要在FileConfig
的类定义中的Q_OBJECT宏,否则信号和插槽将无法工作。请记住在添加宏后重新运行QMake。
相关文章:
- 如何创建从Maya(或类似程序)到虚幻引擎的自定义数据导出插件
- std::ranges::elements_view,用于自定义类似元组的数据
- 通过 NIF 从C++返回自定义数据结构
- 我们可以在套接字编程中将自定义数据作为辅助数据发送吗?
- 自定义数据结构的优点是什么?
- 如何在 omnet++ 中发送自定义数据包?
- 错误 - 自定义数据类型作为有效负载,带有提升::几何
- C++哈希表 - 如何解决自定义数据类型作为键的unordered_map冲突?
- 如何在自定义 LLVM 传递之间正确传递数据结构
- 从自定义数据类型向量中删除重复元素
- C++:自定义数据类型向量错误的队列
- 如何使用自定义流操纵器在类实例中保存数据
- C++ - 按自定义数据类型向量的值删除元素
- 自定义堆栈上 std::string 数据的输出
- 将自定义 Java 数据模型传递给我的本机代码
- 如何使用自定义比较器初始化类数据成员,该成员是 std::set
- 通过套接字发送的自定义数据包
- 从自定义结构数组中提取数据
- 将 OpenGL VBO 与自定义类/数据结构一起使用
- QML自定义列表数据类型