天天看点

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

qtbalewidget是qt对话框设计中常用的显示数据表格的控件。

学习qtablewidget就要首先看看qtableview控件(控件也是有”家世“的!就像研究人一样一样的),因为qtablewidget继承于类qtableview。

两者主要区别是qtableview可以使用自定义的数据模型来显示内容(也就意味着使用时先要通过setmodel来绑定数据源),而qtablewidget则只能使用标准的数据模型。

qtablewidget单元格数据是qtablewidgetitem对象来实现的(即就是不需要数据源,单元格内的信息需要逐个填充即可)。

这主要由于qtableview类中有setmodel成员函数,而到了qtablewidget类中,该成员函数变成了私有。

使用qtablewidget就离不开qtablewidgetitem。

qtablewidgetitem用来表示表格中的其中一个单元格,整个表格都需要用逐个单元格对象qtablewidgetitem构建起来。

在默认情况下,表格里的字符是可以更改的。

 比如双击一个单元格,就可以修改原来的内容,如果想禁止用户的这种操作,让这个表格对用户只读,可以这样:

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

ui.qtablewidget->setedittriggers(qabstractitemview::noedittriggers);  

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

ui.qtablewidget->setselectionbehavior(qabstractitemview::selectrows);   

 单个选中意味着每次只可以选中一个单元格,多个就是相当于可以选择”一片“那种模式。

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

ui.qtablewidget->setselectionmode(qabstractitemview::extendedselection);   

 对于水平或垂直方向的表头,如果不想显示可以用以下方式进行(隐藏/显示)设置:

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

ui.qtablewidget->verticalheader()->setvisible(true);    

ui.qtablewidget->horizontalheader()->setvisible(false);  

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

ui.qtablewidget->item(0, 0)->settextalignment(qt::alignhcenter);  

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

ui.qtablewidget->item(1, 0)->setbackgroundcolor(qcolor(0,60,10));     

ui.qtablewidget->item(1, 0)->settextcolor(qcolor(200,111,100));   

ui.qtablewidget->item(1, 0)->setfont(qfont("helvetica"));   

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

ui.qtablewidget->setitem(1, 0, new qtablewidgetitem(str));  

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

qstring str =ui.qtablewidget->item(0, 0)->data(qt::displayrole).tostring();  

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

qcombobox *combox = new qcombobox();   

combox->additem("f");   

combox->additem("m");   

ui.qtablewidget->setcellwidget(0,3,combox);  

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

 //合并单元格的效果  

ui.qtablewidget->setspan(2, 2, 3, 2);  

//第一个参数:要改变的单元格行数  

//第二个参数:要改变的单元格列数  

//第三个参数:需要合并的行数  

6 //第四个参数:需要合并的列数  

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

ui.qtablewidget->setitem(3, 2, new qtablewidgetitem(qicon("images/music.png"), "music"));  

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

ui.qtablewidget->setshowgrid(true);//显示表格线  

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

ui.qtablewidget->sethorizontalscrollbarpolicy(qt::scrollbaralwaysoff);//去掉水平滚动条  

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

//初始化界面  

qstringlist  hstrlist;  

hstrlist.push_back(qstring("name"));  

hstrlist.push_back(qstring("id"));  

hstrlist.push_back(qstring("age"));  

hstrlist.push_back(qstring("sex"));  

hstrlist.push_back(qstring("department"));  

//设置行列数(只有列存在的前提下,才可以设置列标签)  

int hlablecnt = hstrlist.count();  

ui.qtablewidget->setrowcount(10);  

ui.qtablewidget->setcolumncount(hlablecnt);  

//设置列标签  

ui.qtablewidget->sethorizontalheaderlabels(hstrlist);  

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

ui.qtablewidget->resizecolumnstocontents();    

ui.qtablewidget->resizerowstocontents();    

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

ui.qtablewidget->setfont(font);   //设置字体  

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

<p>qstring strtext = ui.qtablewidget->item(0, 0)->text();</p>  

qstring strtext = ui.qtablewidget->item(0, 0)->text();

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

ui.tablewidget->clearcontents( );   // 清除表项  

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

while(ui.tablewidget->rowcount( ) > 0)  

{  

    ui.tablewidget->removerow(0);    // 删除第0行  

}  

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

// qtablewidget选中所有单元格及取消选中所有单元格  

//    ui->allowselectkeytablewidget->selectall();  

//    ui->allowselectkeytablewidget->setfocus();  

    introwcount=ui->tablewidget->rowcount();  

    qdebug()<<"rowcount"<<rowcount;  

    intcolcount=ui->tablewidget->columncount();  

    qdebug()<<"colcount"<<colcount;  

    qtablewidgetselectionrangerange(0,0,rowcount-1,colcount-1);  

    ui->tablewidget->setrangeselected(range,true);//false不选中  

    ui->tablewidget->setfocus();  

方法1

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

qlist<qtablewidgetitem*>items=ui->tablewidget->selecteditems();  

intcount=items.count();  

for(inti=0;i<count;i++)  

    {  

       introw=ui->tablewidget->row(items.at(i));//获取选中的行  

       qtablewidgetitem*item=items.at(i);  

       qstringname=item->text();//获取内容  

    }  

方法2

QTableWidget控件使用总结 QTableWidget介绍 QTableWidget使用总结

qlist<qtablewidgetselectionrange>ranges=ui->tablewidget->selectedranges();  

    intcount=ranges.count();  

    for(inti=0;i<count;i++)  

       inttoprow=ranges.at(i).toprow();  

       intbottomrow=ranges.at(i).bottomrow();  

       for(intj=toprow;j<=bottomrow;j++)  

       {  

          qdebug()<<"selectrow"<<j;  

        }  

}  

转载:http://blog.csdn.net/gatieme/article/details/17991269

继续阅读