博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
generate html code from QTableWidget with row and column span support
阅读量:4060 次
发布时间:2019-05-25

本文共 2895 字,大约阅读时间需要 9 分钟。

#include <QApplication>
#include <zftpclient.h>
#include <zpdfviewer.h>
#include <QTableWidget>
#include <QHash>
#include <QFile>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTableWidget tTable;
    tTable.setColumnCount(10);
    tTable.setRowCount(20);
    for(qint32 i=0;i<tTable.rowCount();i++)
    {
        for(qint32 j=0;j<tTable.columnCount();j++)
        {
            QTableWidgetItem *tItem=new QTableWidgetItem;
            tTable.setItem(i,j,tItem);
        }
    }
    tTable.setSpan(0,0,1,3);
    tTable.item(0,0)->setText("(Left,Top)");
    tTable.setSpan(2,2,3,2);
    tTable.item(2,2)->setText("This is beijing hour,open the door to the world.Join us ,couldn't you?");
    tTable.setSpan(13,5,3,6);
    tTable.item(13,5)->setText("hello,this is a html test page ,used to test subtitle parse server.is it work correct?");
    tTable.show();
#if 0
    for(qint32 i=0;i<tTable.rowCount();i++)
    {
        for(qint32 j=0;j<tTable.columnCount();j++)
        {
            qDebug()<<"("<<i<<","<<j<<"):"<<tTable.rowSpan(i,j)<<tTable.columnSpan(i,j);
        }
    }
    qDebug()<<"ends...................";
#endif
    //find out the invalid cells.
    QList<QString> tInvalidCellsList;
    for(qint32 i=0;i<tTable.rowCount();i++)
    {
        for(qint32 j=0;j<tTable.columnCount();j++)
        {
            QString tKey=QString("%1,%2").arg(i).arg(j);
            if(tInvalidCellsList.contains(tKey))
            {
                continue;
            }
            qint32 tRowSpan=tTable.rowSpan(i,j);
            qint32 tColSpan=tTable.columnSpan(i,j);
            if(tRowSpan>1 || tColSpan>1)
            {
                for(qint32 m=i;m<i+tRowSpan;m++)
                {
                    for(qint32 n=j;n<j+tColSpan;n++)
                    {
                        if(m==i && n==j)
                        {
                            //bypass myself.
                            continue;
                        }
                        QString tKey=QString("%1,%2").arg(m).arg(n);
                        tInvalidCellsList.append(tKey);
                    }
                }
            }
        }
    }
    //generate html.
    qreal tColWidth=100.0/tTable.columnCount();
    QString tHtml;
    tHtml.append("<html>");
    tHtml.append(QString("<head><style type=\"text/css\">body{font-size:12px;}table td{width:%1%;height:50px}table tr td{word-break:break-all;}</style></head>").arg(tColWidth));
    tHtml.append("<body>");
    tHtml.append("<table width=\"100%\" height=\"100%\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\">");
    tHtml.append("\n");
    for(qint32 i=0;i<tTable.rowCount();i++)
    {
        tHtml.append(QString("<tr>"));
        tHtml.append("\n");
        for(qint32 j=0;j<tTable.columnCount();j++)
        {
            QString tKey=QString("%1,%2").arg(i).arg(j);
            if(tInvalidCellsList.contains(tKey))
            {
                //bypass invalid cells.
                continue;
            }
            qint32 tRowSpan=tTable.rowSpan(i,j);
            qint32 tColSpan=tTable.columnSpan(i,j);
            tHtml.append(QString("<td rowspan=\"%1\" colspan=\"%2\" align=\"left\">").arg(tRowSpan).arg(tColSpan));
            tHtml.append("<input type=\"checkbox\" checked=\"checked\">");
            tHtml.append(tTable.item(i,j)->text());
            tHtml.append("</td>");
            tHtml.append("\n");
        }
        tHtml.append(QString("</tr>"));
        tHtml.append("\n");
    }
    tHtml.append("</table>");
    tHtml.append("\n");
    tHtml.append("</body>");
    tHtml.append("</html>");
    QFile tFile("/home/shell.albert/subtitle.html");
    if(tFile.open(QIODevice::WriteOnly))
    {
        tFile.write(tHtml.toUtf8());
        tFile.flush();
        tFile.close();
    }
    return 0;
    return a.exec();
}

转载地址:http://kkzji.baihongyu.com/

你可能感兴趣的文章
【数据结构周周练】001顺序表与链表(含上海大学832计算机组成原理与数据结构原题)
查看>>
C++获取数组长度(自写函数实现)
查看>>
C++报错:写入位置 0xCCCCCCCC 时发生访问冲突。
查看>>
C++报错:引发了未经处理的异常:写入访问权限冲突, p 是 0xCCCCCCCC
查看>>
【数据结构周周练】002顺序表与链表
查看>>
C++报错:C4700:使用了非初始化的局部变量
查看>>
【数据结构周周练】003顺序栈与链栈
查看>>
【数据结构周周练】004顺序栈与链栈 -数制转换
查看>>
C++函数返回值介绍(含return 0 与 return 1 与 return -1介绍)
查看>>
C++报错:读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突
查看>>
【数据结构周周练】005顺序队列与链队 -扑克牌的筛选
查看>>
【数据结构周周练】006队列基本操作-顺序结构及链式结构实现
查看>>
C++类、结构体、函数、变量等命名规则详解
查看>>
【数据结构周周练】007顺序结构实现完全二叉树操作- 求编号i与j最近公共祖先结点
查看>>
C++ goto语句详解
查看>>
【数据结构周周练】008 二叉树的链式创建及测试
查看>>
【数据结构周周练】009 二叉树的先序、中序、后序遍历(递归算法实现)
查看>>
【数据结构必备基本知识】递归与迭代的联系、区别与优缺点对比详解
查看>>
【数据结构周周练】010 递归算法实现二叉树的创建与遍历
查看>>
【数据结构周周练】011 非递归算法实现二叉树的遍历
查看>>