先建立乙個qt widgets 應用程式,並將mainwindow.cpp檔案中修改為如下**
#include "執行檢視效果,mainwindow.h
"#include
"ui_mainwindow.h
"#include
#include
#include
#include
#include
#include
#include
#include
static
bool
createconnectiondatebase()
qsqlquery query;
query.exec(
"create table test_sql (id int(1) primary key,name char(200),age int(1),chenked int (1))");
query.exec(
"insert into test_sql values(1,'測試1',18,0)");
query.exec(
"insert into test_sql values(2,'測試2',19,0)");
query.exec(
"insert into test_sql values(3,'測試3',20,0)");
return
true;}
mainwindow::mainwindow(qwidget *parent) :
qmainwindow(parent),
ui(newui::mainwindow)
model = new qsqltablemodel(this
); model->settable("
test_sql");
model->setheaderdata(0,qt::horizontal,tr("
id號"
)); model->setheaderdata(1,qt::horizontal,tr("姓名"
)); model->setheaderdata(2,qt::horizontal,tr("年齡"
)); model->select
(); qtableview *view = new qtableview(this
); view->setmodel(model);
setcentralwidget(view);
//ui->tableview->setmodel(model);
}mainwindow::~mainwindow()
現在開始往這個表中新增核取方塊,需要繼承qsqltablemodel類,在工程中add new,新建乙個c++類,名字為mytablemodel,然後在將生成的mytablemodel.h和metaoblemodel.cpp修改為如下:
#ifndef mytablemodel_h#define mytablemodel_h#include
class mytablemodel:public
qsqltablemodel
;#endif
//mytablemodel_h
#include "然後將mianwindow.cpp中包含該標頭檔案 mytablemodel.h 然後將mianwindow.cpp的建構函式修改為如下:mytablemodel.h
"qmap
check_state_map;
int checkcolumn = 3;//
將核取方塊放到第幾列,從0開始計數
mytablemodel::mytablemodel(qobject *parent, qsqldatabase db)
bool mytablemodel::setdata(const qmodelindex &index, const qvariant &value, int
role)
else
return
qsqltablemodel::setdata(index, value,role);
}qvariant mytablemodel::data(
const qmodelindex &index, int role) const
switch
(role)
return
qt::unchecked;
}default
:
return
qvariant();
}return
qvariant();
}qt::itemflags mytablemodel::flags(
const qmodelindex &index) const
mainwindow::mainwindow(qwidget *parent) :然後執行看效果qmainwindow(parent),
ui(newui::mainwindow)
model = new mytablemodel(this
); model->settable("
test_sql");
model->setheaderdata(0,qt::horizontal,tr("
id號"
)); model->setheaderdata(1,qt::horizontal,tr("姓名"
)); model->setheaderdata(2,qt::horizontal,tr("年齡"
)); model->select
(); qtableview *view = new qtableview(this
); view->setmodel(model);
setcentralwidget(view);
//ui->tableview->setmodel(model);
}
核取方塊已經出現在了第3列。
至於怎麼知道是否選中呢,
在mytablemodel.cpp檔案中的check_state_map中, check_state_map[i]的值就是第i行checkbox的值。
在PyQt中對QTableView新增右鍵選單
上面的軟體,最左側是qlist,中間是qlabelview,準備給中間的 加個右鍵選單,主要 如下 self.view setcontextmenupolicy qt.customcontextmenu 右鍵選單,如果不設為customcontextmenu,無法使用customcontextmen...
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中加入Check列實現
qtableview qcheckbox列 核取方塊 qtableview中嵌入核取方塊checkbox 第二種方法 設定qabstracttablemodel的flags 函式法 通過delegate建立qcheckbox來實現的check列,只有在該列進入編輯模式時才能夠check unchec...