一个非常简单的功能,但是当时在公司写的比较麻爪,小菜鸡一个。整体说一下思路,
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);//前边是样式,后边是字体大小