QTableWidget中实现表格的自动换行

1参考资料:稍后补充。

2.实现方法1:该方法十分简单,只需要一行代码即可。

用到的QTableWidget中的函数:

信号:itemChanged(QTableWidgetItem*)//单元格内容改变后触发该信号
槽函数:resizeRowsToContents()//根据单元格内容调整行高

将信号和槽函数连接起来,就可以实现改变单元格内容后,行高跟着改变,然后它会根据单词间的空格自动换行。所以只用一行就可以。

    connect(ui->tableWidget,SIGNAL(itemChanged(QTableWidgetItem*)),
            ui->tableWidget,SLOT(resizeRowsToContents()) );

实现方法2:方法1稍微有个缺点就是如果输入一段英文字符串,它就不会自动分行,显示不全的部分会以"..."代替。方法2是给单元格写个代理,重新实现paint()函数。

部分示例代码如下:

    //根据表格内容增加行高
    connect(ui->tableWidget,SIGNAL(itemChanged(QTableWidgetItem*)),
            ui->tableWidget,SLOT(resizeRowsToContents()) );

    //设置表格自动换行代码如下
    //新建代理
    TextEditDelegate * textEditer = new TextEditDelegate ;
    //给表格设置代理
    ui->tableWidget->setItemDelegateForRow(0,textEditer);
    //给第一行第一列表格设置文字
    ui->tableWidget->setRowCount(2);
    ui->tableWidget->setColumnCount(2);
    QTableWidgetItem * item0 = ui->tableWidget->item(0,0);
    if(item0 == NULL)
    {
        item0 = new QTableWidgetItem;
        ui->tableWidget->setItem(0,0,item0);
    }
    item0->setText(QString("ThisIsATestToVerifyIfTheTableCouldGoToNextRow."));
    //给第2行第1列设置文字
    QTableWidgetItem * item1 = ui->tableWidget->item(1,0);
    if(item1 == NULL)
    {
        item1 = new QTableWidgetItem;
        ui->tableWidget->setItem(1,0,item1);
    }
    item1->setText(QString("这是段测试语句,用来测试表格是否具有换行功能。"));

实现方法1的效果如下图第2行所示,行高会增加,中文会自动换行;实现方法2的效果如下图第1行所示,行高没有增加,但是换行了。所以实现方法2需要用其他方法调整行高,目前还没实现。

另外全部源代码下载链接:http://pan.baidu.com/s/1slNl61n

编译环境Qt5.7.0(mingw版)

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值