Subclassing QTableWidget


Subclassing QTableWidget

在空的Cell 上输入文字时,QTableWidget 会自动创建QTableWidgetItem 以存储文本。

QTableWidgetItem 不是Widget 类,它是纯数据类。Cell 类派生自QTableWidgetItem


Spreadsheet::Spreadsheet(QWidget *parent)
     setItemPrototype(new Cell);
     setSelectionMode(ContiguousSelection);  // allow a single rectangular selection  ???

      
用户在Cell 上输入数据时,我们希望QTableWidget 自动创建Cell 类而不是QTableWidgetItem 用来存储文本,setItemPrototype() 函数可以完成你的愿望。

setRowCount(0);
setColumnCount(0);
setRowCount(RowCount);
setColumnCount(ColumnCount);

要清除Cell 数据先把行列设成0,再恢复原值既可。

QTableWidget 拥有多个子Widget,顶部横向的QHeaderView,左侧纵向的QHeaderView,还有两个QScrollBars(位于右边和下面);

QTableWidget 的中心位置是一个viewport,这里是绘制单元格的地方。

QTableWidgetItem::formula(),多数情况下formula 和text 是一样的,比如输入"hello",输出也是"hello"。

但是另一些例外:输入"1.5",formula 返回double 值1.5,并且以右对齐的方式在单元格中渲染。

If the formula starts with a single quote,formula 返回的是text。如输入"12345",返回字符串"12345"

void Spreadsheet::setFormula(int row, int column,
                             const QString &formula)
{
    Cell *c = cell(row, column);
    if (!c) {
        c = new Cell;
        setItem(row, column, c);
    }
    c->setFormula(formula);  // c 这个单元格的值从A1 和A2 计算出来,用公式"=A1+A2"
}


如果formula 以一个"=" 开始,将被当做一个计算式。例如, A1,A2 两个单元格的数据分别是"12" 和"6",公式 "=A1+A2" 计算出 18


QTableWidgetItem 不只包含数据,还存储了一些属性,如字符串,字体,颜色,icon,以及一个指向QTableWidget 的指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值