QSplitter使用案例,QFile使用案例

在qtDesigner中已经画好的界面,如何在其基础上加上QSplitter,使上下表格中间可以实现拖拽。

打开软件时使用QFile加载配置文件到QMap。

更改QTableWidget的某一行的底部颜色为其他颜色。

1.QSplitter

原ui界面箭头所指的地方无法进行上下拖拽。

代码实现:

void YF_bcmuInfo::dragInterface()
{
    //bmu界面上下可拖拽功能
    QSplitter* splitterBmu = new QSplitter(Qt::Vertical, this);
    //先获取到上下表格对象
    QWidget* tbWBmu = ui.tbWBmu;
    QWidget* tbWAlarmFault = ui.tbWAlarmFault;
   //从原布局上去除掉这两个表格对象
    ui.tabBmu->layout()->removeWidget(tbWBmu);
    ui.tabBmu->layout()->removeWidget(tbWAlarmFault);
    //给splitter加上两个表格对象
    splitterBmu->addWidget(tbWBmu);
    splitterBmu->addWidget(tbWAlarmFault);
    //给原布局加上splitter对象
    ui.tabBmu->layout()->addWidget(splitterBmu);
    //另一个界面逻辑相同
    //bcmu界面上下可拖拽功能
    QSplitter* spliiterBcmu = new QSplitter(Qt::Vertical, this);
    QWidget* tbWBcmu = ui.tbWBcmu;
    QWidget* tbWBcmuFault = ui.tbWBcmuFault;
    ui.tabBcmu->layout()->removeWidget(tbWBcmu);
    ui.tabBcmu->layout()->removeWidget(tbWBcmuFault);
    spliiterBcmu->addWidget(tbWBcmu);
    spliiterBcmu->addWidget(tbWBcmuFault);
    ui.tabBcmu->layout()->addWidget(spliiterBcmu);
    //htem界面上下可拖拽功能
}

2.QFile,QMap

本地文件profile

打开程序时调用以下函数

QMap<QString, double> rateMap = {
    {"BCMU电压倍率",100},
    {"BCMU电流倍率",10},
    {"BCMU环境温度",20},
    {"BCMU累计容量",100},
    {"BCMU电池包总电压设置",100},
    {"BMU电压倍率",1000},
    {"温度",20},
    {"最大最小值编号",1}
};
void YF_bcmuInfo::readProfile()
{
   
   //构建文件路径
    QString filePath = QDir::currentPath();
    QString profilePath = filePath + "/profile/profile.txt";
//构建文件对象
    QFile profile(profilePath);
//打开文件,以只读的方式,第二个参数QIODevice::Text表示以文本方式打开,默认是以二进制的方式打开
    if (!profile.open(QIODevice::ReadOnly|QIODevice::Text)) {
        qDebug() << "打开配置文件失败";
        return;
    }
//文件流对象
    QTextStream stream(&profile);
//设置编码格式,不然读出来的数据是乱码
    stream.setCodec("UTF-8");
//循环读取数据
    while (!stream.atEnd()) {
//读取一行去掉前后空白
        QString lineData = stream.readLine().trimmed();
//以空格分开
        QStringList lineList=lineData.split(" ");
        if (lineList.size() == 2) {
            QString label = lineList[0];
            double value = lineList[1].toDouble();
//存入map,rateMao定义为全局变量
            rateMap[label] = value;
        }

    }
//关闭文件
    profile.close();
}

3.设置tablewidget的表格的某一行边框线为其他颜色

  if (tbWidget == ui.tbWbcmuParam_set) {
        
        // 设置不同区域的边框样式
        for (int row = 0; row < tbWidget->rowCount(); ++row) {
            for (int col = 0; col < tbWidget->columnCount(); ++col) {
             //我表格中每一项数据是自定义的一个小窗口,所以获取cellwidget设置底部边框样式
                QWidget* widget = ui.tbWbcmuParam_set->cellWidget(row, col);

                // 设置上部分和中间的底部边框
                if (row == 1||row == 4) {
                    QString style = "border-bottom: 1px solid rgba(128, 128, 128, 0.5);";
                    widget->setStyleSheet(style);
                }
            }
        }
    }

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值