QT从json文件中读取数据填充到QTabelView中

1.json文件

{
    "shortcutInfos": 
	[
        {
	        "shortcut":"F1",
	        "applyTo":"全局",
	        "command":"帮助"
        },
        {
	        "shortcut":"F2",
	        "applyTo":"全局",
	        "command":"信息"
        },
        {
	        "shortcut":"F3",
	        "applyTo":"全局",
	        "command":"配置"
        },
        {
	        "shortcut":"F4",
	        "applyTo":"全局",
	        "command":"窗口"
        },
        {
	        "shortcut":"F5",
	        "applyTo":"全局",
	        "command":"事件"
        }
	]
}

2.头文件 HelpDialog.h

#ifndef HELPDIALOG_H
#define HELPDIALOG_H

#include <QDialog>

namespace Ui {
class HelpDialog;
}

typedef struct _ShortcutInfo
{
	QString shortcut;
	QString applyTo;
	QString command;
}ShortcutInfo;

class QStandardItemModel;
class HelpDialog : public QDialog
{
	Q_OBJECT
public:
    explicit HelpDialog(QWidget *parent = 0);
    ~HelpDialog();
	void setModelContent();
	void initShortcutInfoList();
Q_SLOT void on_closeBtn_clicked();
private:
    Ui::HelpDialog *ui;
	QStandardItemModel* mModel;
	QList<ShortcutInfo> mShortcutInfoList;
};

#endif // HELPDIALOG_H

3.源文件 HelpDialog.cpp

#include "HelpDialog.h"
#include "ui_HelpDialog.h"
#include <QStandardItemModel>
#include <QFile>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QDebug>
#include <QTextCodec>

HelpDialog::HelpDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::HelpDialog)
{
    ui->setupUi(this);
	setWindowFlags(Qt::FramelessWindowHint);
	//setWindowModality(Qt::WindowModal);
	ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
	ui->tableView->horizontalHeader()->setHighlightSections(false);
	ui->tableView->verticalHeader()->hide(); 
	ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); 
	//ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
	ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
	ui->tableView->setFocusPolicy(Qt::NoFocus);

	mModel = new QStandardItemModel(this);
	QStringList headList;
	headList << tr("Shortcut") << tr("Applies to:") << tr("Command");
	mModel->setHorizontalHeaderLabels(headList);
	
	setModelContent();

	ui->tableView->setModel(mModel);

	QString style = "QDialog{background-color:#1A1E30;border:1px solid #3D4C76;}"//
		"QLabel{"
		"color:#D0DFE6;"
		"font-size:24px;"
		"font-weight:bold;"
		"}"
		"QScrollBar:vertical                                 "
		"{                                                   "
		"    background:#337E9AF8;                           "
		"    padding-top:1px;                                "
		"    padding-bottom:1px;                             "
		"    width:14px;                                     "
		"    border-radius:0px;                              "
		"}                                                   "
		"QScrollBar:vertical:hover{                          "
		"    background:#337E9AF8;                           "
		"    padding-top:1px;                                "
		"    padding-bottom:1px;                             "
		"    width:8px;                                      "
		"    border-radius:0px;                              "
		"}                                                   "
		"QScrollBar::handle:vertical                         "
		"{                                                   "
		"    background:#997E9AF8;                           "
		"    border-radius:4px;                              "
		"    min-height:10px;                                "
		"    margin-left:3px;                                "
		"    margin-right:3px;                               "
		"}"
		"QScrollBar::handle:vertical:hover,QScrollBar::handle:vertical:pressed{   "
		"    background:#7E9AF8;                                                  "
		"}                                                                        "
		"QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical{             "
		"    background:none;                                                     "
		"}                                                                        "
		"QScrollBar::add-line:vertical,QScrollBar::sub-line:vertical{             "
		"    background:none;                                                     "
		"}                                                                        "
		"QScrollBar:horizontal{                                                   "
		"    background:rgba(29,37,64,160);                                       "
		"    padding:0px;                                                         "
		"    border-radius:4px;                                                   "
		"    height:8px;                                                          "
		"}                                                                        "
		"QScrollBar::handle:horizontal{                                           "
		"    background:#6C7FAB;                                                  "
		"    width:50px;                                                          "
		"    height:14px;                                                         "
		"    border-radius:4px;                                                   "
		"    padding:3px,0px,3px,0px;                                             "
		"} "
		"QScrollBar::handle:horizontal:hover,QScrollBar::handle:horizontal:pressed{"
		"    background:rgba(126,154,248,160);                                     "
		"}                                                                         "
		"QScrollBar::add-page:horizontal,QScrollBar::sub-page:horizontal{          "
		"    background:none;                                                      "
		"}                                                                         "
		"QScrollBar::add-line:horizontal,QScrollBar::sub-line:horizontal{          "
		"    background:none;                                                      "
		"}                                                                         "
		"QHeaderView::section {                               "
		"    background-color:#1A1E30;                                             "
		"    color:#E8E8E8;                                                        "
		"    border-bottom:1px solid #3D4C76;                                      "
		"    /*width:646px;*/                                                      "
		"    height:36px;                                                          "
		"    font-size:18px;                                                       "
		"}                                                                         "
		"QHeaderView::section:first {                                              "
		"    border-top-left-radius:1px;                                           "
		"    border-bottom-left-radius: 0px;                                       "
		"    border-top-right-radius: 0px;                                         "
		"    border-bottom-right-radius: 0px;                                      "
		"    border-right:1px solid #252E4B;                                       "
		"}                                                                         "
		"QHeaderView::section:middle {                                             "
		"    border-radius:0px;                                                    "
		"    border-bottom:1px solid #3D4C76;                                      "
		"    border-right:1px solid #252E4B;                                       "
		"    /*20283B;*/                                                           "
		"}                                                                         "
		"QHeaderView::section:last {                                               "
		"    border-top-left-radius: 0px;                                          "
		"    border-bottom-left-radius: 0px;                                       "
		"    border-top-right-radius: 1px;                                         "
		"    border-bottom-right-radius: 0px;                                      "
		"}                                                                         "
		"QTableView                                          "
		"{                                                                         "
		"    background:#1C223A;                                                   "
		"    color:#D0DFE6;                                                        "
		"    border:1px solid #3D4C76;                                             "
		"    border-radius:4px;                                                    "
		"    font-size:18px;                                                                    "
		"}                                                                         "
		"QTableView::item{                                   "
		"    color:rgba(208,223,230,1);                                            "
		"    height:28px;                                                          "
		"    border-bottom:1px solid rgba(61,76,118,0.6);                          "
		"}                                                                         "
		"QTableView::item:selected                           "
		"{                                                                         "
		"    background:#181B26;                                                   "
		"    color:#7E9AF8;                                                        "
		"}                                                                         "
		"QTableView::item:hover                              "
		"{                                                                         "
		//"    background:#252E4B;                                                   "
		"    color:rgba(208,223,230,1);                                            "
		"}                                                                         "
		"QTableView::item:selected:!active                   "
		"{"
		"  color:#7E9AF8;"
		"}";

	this->setStyleSheet(style);
}

HelpDialog::~HelpDialog()
{
    delete ui;
}

void HelpDialog::setModelContent()
{
	initShortcutInfoList();
	for (int i = 0; i < mShortcutInfoList.size(); i++)
	{
		mModel->setItem(i, 0, new QStandardItem(mShortcutInfoList.at(i).shortcut));
		mModel->setItem(i, 1, new QStandardItem(mShortcutInfoList.at(i).applyTo));
		mModel->setItem(i, 2, new QStandardItem(mShortcutInfoList.at(i).command));
	}
}

void HelpDialog::initShortcutInfoList()
{
	mShortcutInfoList.clear();
	QFile file("./res/shortcutInfo_ch.json");
	if (!file.open(QIODevice::ReadOnly))
	{
		qDebug() << "file open failed:" << file.errorString();
		return;
	}
	QByteArray arr = file.readAll();
	file.close();
	QJsonParseError jsonError;
	QJsonDocument doc = QJsonDocument::fromJson(arr, &jsonError);
	if (jsonError.error == QJsonParseError::NoError)
	{
		if (!(doc.isEmpty() || doc.isNull()))
		{
			QJsonObject jsonObject = doc.object();
			QJsonArray data = jsonObject.value("shortcutInfos").toArray();
			
			for (int i = 0; i < data.size(); i++)
			{
				QJsonValue value = data.at(i);
				QVariantMap ceilMap = value.toVariant().toMap();
				
				ShortcutInfo info;
				info.shortcut = ceilMap.value("shortcut").toString();
				info.applyTo = ceilMap.value("applyTo").toString();
				info.command = ceilMap.value("command").toString();
				mShortcutInfoList.append(info);
			}
		}
	}
}

void HelpDialog::on_closeBtn_clicked()
{
	QDialog::reject();
}

4.应用代码

HelpDialog dlg;
	dlg.exec();

附写json示例代码:

QFile file(path);
	if (!file.open(QIODevice::WriteOnly))
	{
		LOGF(ERROR, "Failed to save dicom info file.");
		return;
	}
	QJsonArray arr;
	for (int i = 0; i < m_DicomResourceMap.size(); i++)
	{
		QJsonObject obj;
		obj.insert("id", m_DicomResourceMap.value(i).id());
		obj.insert("type", m_DicomResourceMap.value(i).type());
		obj.insert("resourcePath", QString::fromStdString(m_DicomResourceMap.value(i).resource_path()));
		obj.insert("thumbnailPath", QString::fromStdString(m_DicomResourceMap.value(i).thumbnail_path()));
		obj.insert("creationTime", m_DicomResourceMap.value(i).creation_time());
		obj.insert("fps", m_DicomResourceMap.value(i).fps());
		obj.insert("frameCount", m_DicomResourceMap.value(i).frame_count());
		obj.insert("grayscale", m_DicomResourceMap.value(i).grayscale());
		obj.insert("contrastRatio", m_DicomResourceMap.value(i).contrast_ratio());

		arr.insert(i, obj);
	}
	QJsonObject info;
	info.insert("DsaResourceInfo", arr);
	info.insert("LastId", m_LastId);

	QJsonDocument jsonDoc;
	jsonDoc.setObject(info);

	file.write(jsonDoc.toJson());
	file.close();
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值