Qt中QTableView中加入Check列實現

2021-06-22 08:18:36 字數 1957 閱讀 7962

qtableview

qcheckbox列

核取方塊

qtableview中嵌入核取方塊checkbox

第二種方法:

設定qabstracttablemodel的flags()函式法

通過delegate建立qcheckbox來實現的check列,只有在該列進入編輯模式時才能夠check/uncheck。這顯然不是我們想要的,網上翻來翻去,在乙個國外論壇中看到了無需delegate的實現方法,只需重寫model即可:

主要是修改兩個函式:

//設定某一列為可選角色,繪畫出qcheckbox

qt::itemflags flags(const qmodelindex &index) const; 

//根據介面選擇qcheckbox,修改model中的資料

bool setdata(const qmodelindex &index, const qvariant &value, int role);

cpp**  

2.在studentinfomodel .h標頭檔案中的主要**:  

class studentinfomodel : public qabstracttablemodel   

;  public:  

int rowcount(const qmodelindex &parent = qmodelindex()) const;  

int columncount(const qmodelindex &parent = qmodelindex()) const;  

qvariant data(const qmodelindex &index, int role = qt::displayrole) const;  

qvariant headerdata(int section, qt::orientation orientation, int role = qt::displayrole) const;  

qt::itemflags flags(const qmodelindex &index) const;  

bool setdata(const qmodelindex &index, const qvariant &value, int role);  

public:  

void addstudentinfo(const studentinfo &studentinfo);  

signals:  

void studentinfoischecked(const studentinfo &studentinfo);  

private:  

typedef qvectorstudentinfos;  

studentinfos studentinfos;  

int totalcolumn;  

int colnumberwithcheckbox;  

qmap rowcheckstatemap;  

};  

3.在studentinfomodel.cpp檔案中的主要**如下:  

qvariant studentinfomodel::data( const qmodelindex &index, int role ) const

if (role == qt::checkstaterole)   

}   

return qvariant();  

}  qt::itemflags studentinfomodel::flags( const qmodelindex &index ) const

bool studentinfomodel::setdata( const qmodelindex &index, const qvariant &value, int role )  

else

}  return

true;  

}    

Qt中QTableView中加入Check列實現

class mymodel public qsqlquerymodel qt itemflags mymodel flags const qmodelindex index constqvariant mymodel data const qmodelindex index,int role con...

Qt設定樣式(qtableview)

1.在 特定位置插入樣式 this setstylesheet qpushbutton btn one,qpushbutton btn two qpushbutton hover 設定滑鼠移到按鈕上的樣式 qpushbutton pressed this為當前類 ui.widget setstyle...

QT 實現QTableView中,雙擊彈出下拉框

qtableview顯示資料時,雙擊 預設情況下是顯示spin控制項,但很多情況下需要顯示combobox,這需要為tableview增加combox combox 標頭檔案 pragma once comboboxdelegate.h include class combodelegate pub...