QTableWidget

QTableWidget类提供了一个灵活的和可编辑的表格控件,包含很多 API,可以处理标题、行列、单元格和选中区域, QTableWidget可以嵌入编辑框或显示控件,并可通过拖动控制柄调节各单元格的大小。表格中的每一项可以定义成不同的属性,可以显示文本,可以插入控件,这样就给表格的使用带来了很好的扩展性。

       QTableWidget中单元格包含的内容成为QTableWidgetItem。如果想向QTableWidget中添加文字或图片,则需要先创建一个QTableWidgetItem,然后使用QTableWidget的方法setItem()将其添加到QTableWidget中。当然,如果要对QTableWidget中的任意一个单元格项进行特殊设置,比如字体、颜色等也需要使用QTableWidgetItem。而对于向QTableWidget中添加控件则只需使用QTableWidget的方法setCellWidget()将创建的控件指针作为参数传递进来即可。

QTableView可以使用自定义的数据模型来显示内容(也就是先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象来实现的(也就是不需要数据源,将逐个单元格内的信息填好即可)。这主要体现在QTableView类中有setModel成员函数,而到了QTableWidget类中,该成员函数变成了私有。使用QTableWidget就离不开QTableWidgetItemQTableWidgetItem用来表示表格中的一个单元格,正个表格都需要用逐个单元格构建起来。

       4、实例。

QTableWidget * pTableWidget = new QTableWidget( this );

       pTableWidget->setColumnCount( 5 );                 //设置列数

       pTableWidget->setRowCount( 3 );                       //设置行数

      //pTableWidget = new QTableWidget( 5, 3, this );  //带参构造函数

       /*设置列名*/

       QStringList headers;

       headers << tr( "列名1" ) << tr( "列名2" ) <<  tr( "列名3" ) << tr( "列名4" ) << tr( "列名5" ); //乱码???

       pTableWidget->setHorizontalHeaderLabels( headers );

       /*给单元格添加内容*/

       addItemContent( 0, 0, tr( "ad" ) );

       /*给单元格中增加图标*/

       QTableWidgetItem * pItem1 = new QTableWidgetItem( QIcon( ".//Resources//Male.png" ), NULL ); //只加入图标,没有字符串

       QTableWidgetItem * pItem2 = new QTableWidgetItem( QIcon( ".//Resources//Male.png" ), tr( "Male" ) );//加入图标和字符串

       pTableWidget->setItem( 0, 1, pItem1 );

       pTableWidget->setItem( 0, 2, pItem2 );

       /*插入一行*/

       int row = pTableWidget->rowCount();

       pTableWidget->insertRow( row );

       /*插入一列*/

       int column = pTableWidget->columnCount();

       pTableWidget->insertColumn( column );     //设置某一列的标题

       //使行列头自适应宽度,最后一列将会填充空白部分???,注意需要头文件“QHeaderView

       //pTableWidget->horizontalHeader()->setStretchLastSection( true );

       //是行列头自适应宽度,所有列平均分来填充空白部分,注意需要头文件“QHeaderView

       //pTableWidget->horizontalHeader()->setResizeMode( QHeaderView::Stretch );

     //使行自适应高度。假如行很多的话,行的高度不会一直减小,当达到一定值时会自动生成一个QScrollBar,注意需要头文件“QHeaderView

       //pTableWidget->verticalHeader()->setResizeMode( QHeaderView::Stretch );

       //设置单击选择一行,注意需要头文件“QAbstractItemView

       pTableWidget->setSelectionBehavior( QAbstractItemView::SelectRows );

       //设置每行内容不可编辑,注意需要头文件“QAbstractItemView

       //pTableWidget->setEditTriggers( QAbstractItemView::NoEditTriggers );

       //设置只能选择一行,不能选择多行,注意需要头文件“QAbstractItemView

       //pTableWidget->setSelectionMode( QAbstractItemView::SingleSelection );

       //去掉每行的行号,注意需要头文件“QHeaderView

       //QHeaderView * pHeaderView = pTableWidget->verticalHeader();

       //pHeaderView->setHidden( true );

       //设置选中某个单元格,注意需要头文件“QItemSelectionModel

       //pTableWidget->setCurrentCell( 0, 1, QItemSelectionModel::Select );

       //设置选中某行,注意需要头文件“QItemSelectionModel

       //pTableWidget->setCurrentCell( 1, QItemSelectionModel::Select );

       //表头的显示与隐藏,注意需要头文件“QHeaderView

       //pTableWidget->verticalHeader()->setVisible( false );           //隐藏列表头,也可通过去掉行号实现

       //pTableWidget->horizontalHeader()->setVisible( false );       //隐藏行表头

       //对表头文字的字体、颜色进行设置

       //QTableWidgetItem * pColumnHeaderItem = pTableWidget->horizontalHeaderItem( 1 );         //获得水平方向表头的Item对象

       //pColumnHeaderItem->setFont( QFont( "Helvetia" ) );                 //设置字体

       //pColumnHeaderItem->setBackgroundColor( QColor( 0, 60, 10 ) );//设置单元格背景颜色

       //pColumnHeaderItem->setTextColor( QColor( 200, 111, 30 ) );   //设置文字颜色

       //pColumnHeaderItem->setText( tr( "Column" ) );

       //在单元格中加入控件

       QComboBox * pComboBox = new QComboBox();

       pComboBox->addItem( tr( "Male" ) );

       pComboBox->addItem( tr( "FeMale" ) );

       pTableWidget->setCellWidget( 1, 0, pComboBox );

     

/********************************************************/

       //设置行和列的大小与内容匹配

       pTableWidget->resize( 700, 500 );        //设置整个表格的大小

       pTableWidget->resizeColumnsToContents();

       pTableWidget->resizeRowsToContents();

       //设置某行或某列的大小

       //pTableWidget->setColumnWidth( 3, 200 );

       //pTableWidget->setRowHeight( 3, 60 );

      

       //合并单元格

       pTableWidget->setSpan( 2, 0, 2, 2 );

       //单元格设置字体颜色和背景颜色 及字体字符

       QTableWidgetItem * pItem3 = new QTableWidgetItem("Apple");

       pItem3->setBackgroundColor( QColor( 0, 60, 10 ) );

       pItem3->setTextColor( QColor( 200, 111, 100 ) );

       pItem3->setFont( QFont( "Helvetica" ) );

       pItem3->setTextAlignment( Qt::AlignCenter );   //设置单元格内文字的对齐方式,如果两种都要设置,只要用 Qt.AlignHCenter | Qt.AlignVCenter 的方式即可

       pTableWidget->setItem( 2, 0, pItem3 );

       //另:如果需要对所有的单元格都使用这种字体,则可以使用 pTableWidget->setFont(QFont("Helvetica"));

       pTableWidget->show();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值