使用QTableWidget定制表格,操作比较简单。
声明并定义一个QTableWidegt
QTableWidget *table = new QTableWidget;
1、QTableWidget使用必须设置好行数与列数。
table->setColumnCount(3);//列
table->setRowCount(3);//行
2、设置表格表头。
table->setHorizontalHeaderLabels(QStringList()<<"一"<<"二"<<"三");
3、动态增加表格行。
table->setRowCount(table->currentRow() + 1);
4、表格中添加数据。
在QTableWidget中,表格每一个中的数据单独表示,用QTableWidgetItem类实现。
QTableWidgetItem *item = new QTableWidget;
item属性设置。
item->setText("一!");//设置显示内容。
item->setTextAlignment(Qt::AlignCenter);//设置内容显示格式,居中显示。
item->setBackground(QBrush(QColor(Qt::red)));//设置当前格背景色。
在表格中将item显示出来
table->setItem(0,0,item);//在0,0处加入item。
5、表格特定列排序。
table->sortByColumn(0,Qt::DescendingOrder);//降序排列第一行。
6、获取特定格数据。
table->item(0,0);//第一行第一个。
在QTableWidget所绘制的表格中添加控件
可以:
QCheckBox *box = new QCheckBox;//新建一个控件。
table->setcellWidget(1,0,box);//将checkbox加入表格
但此时控件并不是居中的,且QTableWidget不提供居中控件设置。
可以尝试以下思路:
使用setCellWidget函数理论可以添加任何控件,故可以添加QWidget,在QWidget中加入布局QHBoxLayout,再将控件所需控件加入QWidget中,使用布局自带函数居中设置控件,可以起到在表格中居中显示空控件的效果。
QWidget *widget = new QWidget;//新建个QWidget
QHBoxLayout *layout = new QHBoxLayout;//新建一个垂直布局。
widget->setLayout(layout);添加布局
QCheckBox *box2 = new QCheckBox;//新建控件。
layout->addWidget(box);//在布局中添加控件
layout->setAlignment(box,Qt::AlignCenter);//居中设置控件。
layout->setMargin(0);
table->setCellWidget(0,2,widget);//添加窗体。