QTreeWidget 读取windows注册表

本文介绍了一个使用Qt实现的简单注册表设置查看器。该程序可以读取指定组织和应用的注册表设置,并将其展示在一个易于阅读的树形结构中。通过递归遍历子项,能够清晰地展示出各项配置。
#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    organization = "QtProject";
    application = "OrganizationDefaults";
    ui->treeWidget->setColumnCount(2);
    ui->treeWidget->setHeaderLabels(QStringList()<<tr("key")<<tr("value"));
    ui->treeWidget->setColumnWidth(0,260);
    readSetting();//读取注册表
}

void Dialog::readSetting()
{
    QSettings settings(organization,application);//读取注册表
    ui->treeWidget->clear();//清除树
    addChildSettings(settings,0,"");

    ui->treeWidget->sortByColumn(0);
    ui->treeWidget->setFocus();//设置焦点
    this->setWindowTitle(tr("Settings Viewer -%1  by %2").arg(application).arg(organization));
}

void Dialog::addChildSettings(QSettings &settings, QTreeWidgetItem *parent, const QString &group)
{
    if(!parent)
        parent= ui->treeWidget->invisibleRootItem();//找树根
    QTreeWidgetItem *item;
    settings.beginGroup(group);
    foreach(QString key,settings.childKeys())
    {
        item =  new QTreeWidgetItem(parent);//添加到树根上
        item->setText(0,key);
        item->setText(1,settings.value(key).toString());
    }

    foreach (QString group,settings.childGroups() )
    {
        item = new QTreeWidgetItem(parent);
        item->setText(0,group);
        addChildSettings(settings,item,group);//递归调用
    }

    settings.endGroup();

}

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


#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QSettings>
#include <QTreeWidgetItem>
namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();

private:
    void readSetting();
    void addChildSettings(QSettings &settings,QTreeWidgetItem *item,const QString &group);
private:
    Ui::Dialog *ui;
    QString organization;
    QString application;
};

#endif // DIALOG_H

 

转载于:https://my.oschina.net/osyunwei/blog/718726

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值