从值中填充QTableWidget

时间:2018-09-12 18:57:23

标签: c++ qt qt5

我来自python和pyside。因此,对于在C ++中可能出现的奇怪做法,我深表歉意。

enter image description here

两个问题:

  1. 我想用一组数据填充一个表,该数据当前是字典列表,如我的原始python代码所示。如何将其转换为C ++ Qt项目,以便我可以使用此数据填充tablewidget? Qt似乎没有使用像python这样的字典,而是使用了QMap。

  2. 看起来Qt使用的是QMap变体,而不是字典。如果有更有效的方法,我愿意对数据进行不同的格式化。无论采用哪种方法,都可以轻松保存到文本文件,并同时从文件中加载用户界面。值得一提的是,这些数据最终将保存到文件中并从文件中加载。这就是为什么我的旧python项目使用json作为格式。

我的目标是最终扩展我的QTableWidget子类,以添加用于从文件加载并保存到文件的方法。类似于预设。

词典列表:

[
    {
        "key":"SHOT",
        "value":"",
        "description":"Current Shot node name",
    },
    {
        "key":"PASS",
        "value":"",
        "description":"Current Pass node name",
    },
    {
        "key":"SELF",
        "value":"",
        "description":"Current node name",
    },
    {
        "key":"MM",
        "value":"",
        "description":"Current month as integer ex: 12",
    },
    {
        "key":"DD",
        "value":"",
        "description":"Current day as integer ex: 07",
    }
]

cpp

#include "tokeneditor.h"
#include <QTableWidget>
#include <QVBoxLayout>

TokenEditor::TokenEditor(QWidget *parent) : QWidget(parent)
{
    // Controls
    QTableWidget *ui_userTokens = new QTableWidget();

    // Layout
    QVBoxLayout * layout = new QVBoxLayout();
    layout->setMargin(0);
    layout->setSpacing(0);
    layout->addWidget(ui_userTokens);
    setLayout(layout);

    // populate table with data...
}

1 个答案:

答案 0 :(得分:3)

如评论中所述,Qt支持Json,在下一部分中,我向您展示一个示例,此外,您还应考虑到C ++提供了处理内存的自由,因此在Qt的情况下,考虑在必要时将其消除很多时候,它是通过亲属树将责任交给Qt。

*。h

$.ajax({
    url:"fetch_comment.php",
    method:"POST",
    data:{
        "tpid" :"<?php print $id; ?>"
    },
    dataType:"HTML",
    success:function( response )
    {
        $('#display_comment').html( html );
    }
});

*。cpp

#ifndef TOKENEDITOR_H
#define TOKENEDITOR_H

#include <QWidget>

class QTableWidget;

class TokenEditor : public QWidget
{
    Q_OBJECT

public:
    explicit TokenEditor(QWidget *parent = nullptr);
    ~TokenEditor();

private:
    QTableWidget *ui_userTokens;
};

#endif // TOKENEDITOR_H

enter image description here