//原创,请勿转载
1. QTableWidget 建议对应的数据模型(QStandardItemModel)(MVC模式)
#include <QStandardItemModel>
QStandardItemModel *data_model;
data_model = new QStandardItemModel();
//设置数据模型 表头
data_model->setHorizontalHeaderItem(0, new QStandardItem(QObject::tr("File name")));
data_model->setHorizontalHeaderItem(1, new QStandardItem(QObject::tr("Dx")));
data_model->setHorizontalHeaderItem(2, new QStandardItem(QObject::tr("Dy")));
data_model->setHorizontalHeaderItem(3, new QStandardItem(QObject::tr("Dz")));
2.QTableWidget设置
//利用setModel()方法将数据模型与QTableView绑定
ui.tb_data->setModel(data_model);
//设置表格的各列的宽度值
ui.tb_data->setColumnWidth(0, 300);
ui.tb_data->setColumnWidth(1, 100);
ui.tb_data->setColumnWidth(2, 100);
ui.tb_data->setColumnWidth(3, 100);
//选择模式设置
ui.tb_data->setSelectionMode(QAbstractItemView::SingleSelection); //设置选择模式,选择单行
ui.tb_data->setSelectionBehavior(QAbstractItemView::SelectRows);
ui.tb_data->setEditTriggers(QAbstractItemView::NoEditTriggers);
3. 填充数据并显示
//数据
struct DataItem
{
std::string filaname;
float dx, dy, dz;
};
std::vector<DataItem> _tb_list;+
//显示函数
void icp_view::present()
{
auto iter = _tb_list.end();
iter--;
data_model->setItem(_tb_list.size()-1, 0, new QStandardItem(QString(zt::ztUtil::str2qstr(iter->filaname))));
data_model->setItem(_tb_list.size() - 1, 1, new QStandardItem(QString("%1").arg(iter->dx)));
data_model->setItem(_tb_list.size() - 1, 2, new QStandardItem(QString("%1").arg(iter->dy)));
data_model->setItem(_tb_list.size() - 1, 3, new QStandardItem(QString("%1").arg(iter->dz)));
ui.tb_data->update();
}
4. 双击响应函数
//信号槽
connect(ui.tb_data, SIGNAL(cellDoubleClicked(int, int)), this, SLOT(testSlot(int, int)));
void Table_RC::testSlot(int row, int column)
{
QTableWidgetItem *item1 = new QTableWidgetItem;
item1 = ui.tb_data->item(row, 0);
ui.pushButton->setTest(Item->text());
}
//2018年7月2日
如果整个table连text都没有,那么将不会发送cellDoubleClicked信号。!