创建表格窗口部件,然后把定义的数据输入到表格里面。其实不是很难,设置其静态结构体,声明编号、姓名、性别、职位是字符类型,等级为整型。定义一个数组,装指定字段类型的数据,然后用一个for循环语句指定表格输入的数据,并做判断。用行row来做做变量,初始化为0,如果row数组下标staticDate[row].ID对应的数据不等于0,则row先自加,后赋值,如果staticDate[row].ID对应的数值等于0,则跳出for循环。这是为什么数组第四行数组值都是0的原因。在for循环中,声明表格窗口部件项目对象,并字段数组装的字段类型。设数据存放位置,创建一个没有父窗口的表格,然后插入表格项目用setItem()函数,语法是这样的setItem(row, column, newItem);第一个参数row是行;第二个参数column是列,第三个参数是表格窗口项目,也就是指定的字段类型。main主函数里面声明,创建一个表格对象,并指定是10行,5列。设置表格部件的编辑属性,设置为只读。并设置表格窗口部件头部字符列的标签,标签依次显示为编号、姓名、性别、职业、等级。这个populateTableWidget()函数装表格窗口部件的数据。Resize()函数是设置表格窗口部件的大小。最后运行显示窗口部件。
#include <QApplication><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
#include <QTableWidgetItem>
#include <QTableWidget>
#include <QStringList>
void populateTableWidget(QTableWidget *tableWidget)
{
static const struct {
const char *ID;
const char *Name;
const char *Sex;
const char *Description;
int rating;
} staticData[] = {
{ "2008***1", "ZhangSan","Boy","Student",3},
{ "2008***2", "LiSi", "Woman","Teacher",5},
{ "2008***3", "WangWu", "Man","Leadership",6},
{ 0,0,0,0,0}
};
for (int row = 0; staticData[row].ID != 0; ++row) {
QTableWidgetItem *item0 = new QTableWidgetItem(staticData[row].ID);
QTableWidgetItem *item1 = new QTableWidgetItem(staticData[row].Name);
QTableWidgetItem *item2 = new QTableWidgetItem(staticData[row].Sex);
QTableWidgetItem *item3 = new QTableWidgetItem(staticData[row].Description);
QTableWidgetItem *item4 = new QTableWidgetItem;
// item4->setData(0,qVariantFromValue(StarRating(staticData[row].rating)));
tableWidget->setItem(row, 0, item0);
tableWidget->setItem(row, 1, item1);
tableWidget->setItem(row, 2, item2);
tableWidget->setItem(row, 3, item3);
tableWidget->setItem(row, 4, item4);
}
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTableWidget tableWidget(10,5);
tableWidget.setEditTriggers(QAbstractItemView::NoEditTriggers);
QStringList headerLabels;
headerLabels << "ID" << "Name"<<"Sex"<< "Description"<<"Rating";
tableWidget.setHorizontalHeaderLabels(headerLabels);
populateTableWidget(&tableWidget);
tableWidget.resize(550, 300);
tableWidget.show();
return app.exec();
}
还未完....
转载于:https://blog.51cto.com/chenboqiang/323254