天天看點

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

繼續閱讀