VS2022上使用QT扩展工具-开发笔记

一、vs上配置QT扩展工具

1、指定qt安装的目录,便于识别qt封装的类库

 设置为True,打开ui文件就不会闪退了。

案例

在tabWidget控件上,设置表头及表列

//水平表头自动拉伸(根据窗口大小)
pTable->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
//以列内容自适应
pTable->horizontalHeader()->setSectionResizeMode(col, QHeaderView::ResizeToContents);
//固定值
pTable->horizontalHeader()->setSectionResizeMode(col, QHeaderView::Fixed);
//设置为指定尺寸200
pTable->setColumnWidth(col, 200);
//实际应用
if (tableDatas.eTableName == TBL_SOILPARA_PHYSICS.first.toLocal8Bit().data() ||    //土层参数物理性质 
tableDatas.eTableName == TBL_SOILPARA_DYNAMICS.first.toLocal8Bit().data() ||		//土层参数力学性质
tableDatas.eTableName == TBL_STRATA_PHYSICS.first.toLocal8Bit().data() ||			//岩层地层物理性质
tableDatas.eTableName == TBL_STRATA_DYNAMICS.first.toLocal8Bit().data())			//岩层地层力学性质
{
    //将水平表头的最后一个部分的拉伸策略设置为非拉伸
    pTable->horizontalHeader()->setStretchLastSection(false);
    //if是首列
    if (col == 0)
        pTable->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);//水平表头自动拉伸(根据窗口大小)
    else
        pTable->horizontalHeader()->setSectionResizeMode(col, QHeaderView::ResizeToContents);//以列内容自适应
}

示例解析:

一、功能:实现给四个指定界面的tabWidget控件上的表格式进行设置。

        详细设置:

        1、取消末尾列的列宽随表格宽度自动拉伸;

        2、让首列的列宽随表格宽度自动拉伸;

        3、其他列的列宽以列内容自动拉伸。

二、判断条件:运用逻辑运算符" || "来将需要进行设置的四个界面区分。

        例:其中的一个界面       

         tableDatas.eTableName == TBL_SOILPARA_PHYSICS.first.toLocal8Bit().data()

        含义:通过tableDatas将表名拿到,接着与数据库内的表名进行比较,看是否一致,一致则证明当前表是有记录的。接着就可以对该表添加业务。

        拆解:

        宏TBL_SOILPARA_PHYSICS表示一个表的表名

        first.toLocal8Bit()第一个元素转换为Local8Bit编码的字符串

问题记录及处理办法

一、头文件#include报红,提示找不到指定.h文件

 解决办法:指定正确的.h文件所在的目录

二、在tabWidget控件、view控件上,设置表格下拉框的样式

样式一:直接显示下拉框

样式二:点击单元格后,显示下拉框

//TsyTabTable.cpp片段(设置comboBox样式)

//判断字段内容是否是ComboBox的列,columType ::ComboBox枚举的用法
else if (tableDatas.colTypes [col] == columType ::ComboBox)
{
//获取tableDatas.comboboxData[col]的值,并将其赋给comboList变量
const QstringList& comboList = tableDatas.comboboxData [col];

//根据comboList创建一个TsyComboBoxDelegateEx对象
TsyComboBoxDelegateEx* comBoxDelegate = new TsyComboBoxDelegateEx(comboList);

//并将其设置为表格pTable的第col列的委托(delegate)
pTable->setItemDelegateForColumn (col,comBoxDelegate);

//根据指定的行(row)和列(col),创建一个QTableWidgetItem对象,并将tableDatas.records[row].values[col].toString()的值设置为该对象的文本内容
QrablewidgetItem* item = new QTableWidgetItem(tableDatas.records [row] .values[col].toString());
item->setTextAlignment (Qt ::AlignCenter) ;
pTable->setItem ( row, col, item) ;
}

首行代码,对枚举的运用columType ::ComboBox

第三行代码,用到了一个类TsyComboBoxDelegateEx

案例:导入Excel表到tabWidget控件上

1、调用公共框架里的“现成的方法接口”

int rowCount, colCount;
if (pExcelReader->ReadRowAndColFromCell(rowCount, colCount))
{
    allData->records.resize(rowCount);
    for (int row = 1; row <= rowCount; row++)
    {
        for (int col = 1; col <= colCount; col++)
        {
            if (row == 1)
            {
                allData->cHeaders.push_back(QStringfromLocal8Bit(pExcelReader->ReadFromCel(col, row).GetString().data()));
            }
            else
            {
                allData->records[row -1].values.push_back(QString:fromLocal8Bit(pExcelReader->ReadFromCel(col, row).GetString().data()));
            }
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值