读配置文件.ini的内容并显示到表格

一个非常简单的功能,但是当时在公司写的比较麻爪,小菜鸡一个。整体说一下思路,

1.首先用到了QSettings这个类来读取.ini格式的文件,配置文件格式大概是这样的

2.构造函数 QSettings(const QString &fileName, Format format, QObject *parent = Q_NULLPTR)

Format是文件格IniFormat

void TestShowVersion::readIni() 
{
    QString path = qApp->applicationDirPath() + "/../../version.ini";
    QSettings set(path, QSettings::IniFormat);    
    set.setIniCodec("UTF-8");//配置文件中使用中文时,要设置文件编码,否则乱码
    set.beginGroup("app_version");    
    info<< set.value("app1").toString()
        << set.value("app2").toString()
        << set.value("app3").toString()
        << set.value("app4").toString()
        << set.value("app5").toString()
    /*QStringList s = ss.split(" ");*/
    set.endGroup();
}

 3.将读到的数据在tableWidet上进行显示

void TestShowVersion::showVersion()
{
    readIni();
    QWidget* versionWidget = new QWidget();
    versionWidget->setWindowTitle(QString::fromLocal8Bit("软件版本"));
    versionWidget->resize(600, 700);

    QStringList headerLabels;
    headerLabels << QString::fromLocal8Bit("软件名称") << QString::fromLocal8Bit("软件代号")
        << QString::fromLocal8Bit("软件版本") << QString::fromLocal8Bit("所属");

    QTableWidget* tableWidget = new QTableWidget(info.count(), headerLabels.count());

    tableWidget->setHorizontalHeaderLabels(headerLabels);//设置表头
    tableWidget->verticalHeader()->setVisible(false);//隐藏列表头
    tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    //设置大小自适应
    tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置单元格内容不可编辑
    QLabel* label1 = new QLabel(QString::fromLocal8Bit("周末在家写的小练习"));
    QFont labelfont(QString::fromLocal8Bit("楷体"), 16);
    label1->setFont(labelfont);
    QLabel* label2 = new QLabel(QString::fromLocal8Bit("版本:v1.0.0"));
    QLabel* label3 = new QLabel(QString::fromLocal8Bit("所属者:zxz"));
    QVBoxLayout* vlayout = new QVBoxLayout();
    vlayout->addWidget(label1);
    vlayout->addWidget(label2);
    vlayout->addWidget(label3);
    vlayout->addWidget(tableWidget);
    versionWidget->setLayout(vlayout);
    for (int i = 0; i < info.count(); i++)
    {
        QTableWidgetItem * item = new QTableWidgetItem(info[i].split(" ")[0]);
//这里用到了QString 的split() 
        QTableWidgetItem * item1 = new QTableWidgetItem(info[i].split(" ")[1]);
        QTableWidgetItem * item2 = new QTableWidgetItem(info[i].split(" ")[2]);
        QTableWidgetItem * item3 = new QTableWidgetItem(QString::fromLocal8Bit("周"));
        tableWidget->setItem(i,0,item);
        tableWidget->setItem(i, 1, item1);
        tableWidget->setItem(i, 2, item2);
        tableWidget->setItem(i, 3, item3);

    }
    versionWidget->show();
}

4.运行结果

 

 

qt帮助文档里的例子,可以将QString类型的字符串分割到QStringList中,上面的场景使用它再合适不过了

  QString str = "a,,b,c";

  QStringList list1 = str.split(',');
  // list1: [ "a", "", "b", "c" ]

  QStringList list2 = str.split(',', QString::SkipEmptyParts);
  // list2: [ "a", "b", "c" ]

QFont类指定用于绘制文本的字体。当你创建QFont对象时,可以指定字体具有的各种属性。

QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false)
QFont font("微软雅黑",18);//前边是样式,后边是字体大小

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值