设为首页 加入收藏

TOP

13.7.1 QListWidget(3)
2013-10-07 15:19:22 来源: 作者: 【 】 浏览:65
Tags:13.7.1 QListWidget

13.7.1  QListWidget(3)

每个国家的GDP信息存放在结构体GDP_FACTS中,成员Country指向一个国家的名称,GDP表示GDP总值,Population表示总人口。我们无须在这个结构体中定义每个国家的人均GDP,因为这个数据可以从已有的成员计算出来。GDP数据的表示如代码段13-32所示。

代码段13 32,GDP数据的表示,取自z:\examples\mvc\QTableWidget_demo\main.cpp

  1. typedef struct {  
  2.     char * country;  
  3.     double GDP, population;  
  4. }GDP_FACTS;   
  5. GDP_FACTS GDP_facts[] = {  
  6.     {"United States",   14.6,   2.7  },  
  7.     {"PRC China",       6.1,    13.0 },  
  8.     {"Japan",           5.4,    1.3  },  
  9.     {"Germany",         3.3,    0.8  },  
  10.     {"United Kingdom",  2.3,    0.6  }  
  11. };  

使用QTableWidget显示部分国家GDP数据的过程如代码段13 33所示。行①创建一个QTableWidget对象,行②调用其成员函数setHorizontalHeaderLabels()设置每列的标头。行③创建一个QTableWidgetItem对象表示表格中的一个数据项。该行下面的几行代码设置该数据项的文字对齐方式以及字体。行④~⑤设置某一行4个列的数据项,将角色DisplayRole对应的数据子项设置为该列对应的值。其中成员函数setData()的第二个函数参数是QVariant类型,行④构造的QVariant对象存放一个QString值,其他几行构造的QVariant对象存放double类型的值。当用户单击视图对象某列的标头要求排序时,QTableWidget会依据该列数据项中角色DisplayRole对应数据子项的类型进行排序。创建完毕这些数据项后,行⑥调用QTableWidget的成员函数setItem()将它们添加到QTableWidget的内部模型中。

代码段13 33,类QTableWidget的使用,取自z:\examples\mvc\QTableWidget_demo\main.cpp

  1. int main(int argc, char *argv[])  
  2. {  
  3.     ……  
  4.     const int rows=5columns=4;  
  5.     QTableWidget widget(rows, columns);             ①  
  6.     QStringList list;  
  7.     list << "Country" << "Grand GDP" << "Population" << "GDP per person";  
  8.     widget.setHorizontalHeaderLabels(list);         ②  
  9.  
  10.     for (int row=0; row<rows; row++) {  
  11.         QTableWidgetItem * items[columns];  
  12.         for (int j=0; j<columns; j++ ) {  
  13.             items[j] = new QTableWidgetItem();      ③  
  14.             items[j]->setTextAlignment( Qt::AlignHCenter);  
  15.             QFont font; font.setPointSize(16);  
  16.             items[j]->setFont( font );  
  17.         }             
  18.         GDP_FACTS * p = & GDP_facts[row];         
  19.         items[0]->setData(Qt::DisplayRole, p->country );           ④  
  20.         items[1]->setData(Qt::DisplayRole, p->GDP );          
  21.         items[2]->setData(Qt::DisplayRole, p->population );  
  22.         items[3]->setData(Qt::DisplayRole, p->GDP / p->population );⑤  
  23.         for (int j=0; j<columns; j++ )  
  24.             widget.setItem(row, j, items[j] );                     ⑥  
  25.     }  
  26.     widget.setSortingEnabled(true );  
  27.     ……  
  28. }  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇13.5 委托(Delegates)(1) 下一篇13.7.1 QListWidget(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: