QTableView 的 qt setItem 导致"程序无响应"
qt setItem for QTableView causes "program not responding"
我在qt creator中添加值给表时遇到了问题
在下面的代码中,我有一个函数将数据从数据库插入到表中。
QSqlQuery q;
//counts the number of rows that contain the value acicn
q.prepare("select count(*) from checkdata where acic_num=:acicn");
q.bindValue(":acicn", acicn);
q.exec();
int rowtablecount = 0;
if(q.next()){
rowtablecount = q.value(0).toInt();
//using value acicn, inserts into the table the number of rows found in database
QAbstractItemModel *mdl;
mdl = ui->editEntry_tbl->model();
mdl->insertRows(0,rowtablecount);
}else{
qDebug() << "table error in edit entry";
}
q.finish();
QSqlQuery q2;
q2.prepare("select *from acic where acic_num=:acicnum");
q2.bindValue(":acicnum", acicn);
q2.exec();
//above extracts data from database table acic, below from table checkdata
q.prepare("select * from checkdata where acic_num=:acicnum");
q.bindValue(":acicnum", acicn);
q.exec();
QStandardItemModel *model;
QString temp;
while(q.next()){
for(int r=0; r<rowtablecount-1; r++){
temp =q.value(6).toString(); //date paid
QStandardItem *cellFiller8 = new QStandardItem(temp);
model->setItem(r,10,cellFiller8); //<<--- PART WHERE PROGRAM FAILS AND HANGS, SHOWING PROGRAM NOT RESPONDING
temp =q.value(5).toString(); //amount of check
QStandardItem *cellFiller6 = new QStandardItem(temp);
model->setItem(r,7,cellFiller6);
temp =q.value(4).toString(); //account code
QStandardItem *cellFiller5 = new QStandardItem(temp);
model->setItem(r,6,cellFiller5);
temp =q.value(3).toString(); //particulars
QStandardItem *cellFiller4 = new QStandardItem(temp);
model->setItem(r,5,cellFiller4);
temp =q.value(2).toString(); //payee name
QStandardItem *cellFiller3 = new QStandardItem(temp);
model->setItem(r,4,cellFiller3);
temp =q.value(1).toString(); //alobs
QStandardItem *cellFiller2 = new QStandardItem(temp);
qDebug() << temp;
model->setItem(r,3,cellFiller2);
temp =q.value(0).toString(); //check number
QStandardItem *cellFiller1 = new QStandardItem(temp);
qDebug() << temp;
model->setItem(r,2,cellFiller1);
}
}
while(q2.next()){
for(int r=0; r<rowtablecount-1; r++){
temp =q2.value(3).toString(); //amount of acic
QStandardItem *cellFiller7 = new QStandardItem(temp);
model->setItem(r,8,cellFiller7);
temp =q2.value(0).toString(); //check date
QStandardItem *cellFiller = new QStandardItem(temp);
qDebug() << "before setitem" << temp;
model->setItem(r,1,cellFiller);
qDebug() << "after setItem";
}
}
基本上,使用model->setItem(r,1,cellFiller)
会导致程序挂起。我发现这非常令人困惑,因为我在多次填写QTableView
时使用了同样的方法,但这是第一次发生这种情况。
知道为什么会这样吗?
您忘记初始化您的QStandardItemModel *model
变量了
相关文章:
- 应用程序在打开的简历中捕获视频后没有响应
- 如何使用从处理程序调度的最终回调将响应异步返回给调用方on_read?
- 问题导致程序停止响应,并且姓氏未正确打印
- Qt应用程序不响应鼠标和键盘事件
- 如何让 c++ 程序执行以响应文件打开
- 前和后条件用法。为什么程序不响应条件
- 当后端响应需要很长时间时,WXWIDGET应用程序会挂起
- 有没有一种方法可以测量桌面应用程序 UI 响应时间
- 在 UWP 应用程序中,future.wait() 在尝试同步来自异步方法的响应时继续等待
- X11应用程序在Ubuntu中未响应
- 编译的程序在其他窗口PC上停止响应
- 应用程序使用QMAP存储对象时停止响应
- Win32 中的 Sleep() 使程序无响应
- C++的新手,程序在取消引用向量的一部分时没有响应
- 处理Windows消息,以便我的应用程序正确响应
- 需要接受用户的响应才能执行程序
- Linux:应用程序响应能力和select()
- C++程序停止响应
- 矩阵的动态分配使程序不响应
- QFileDialog导致我的应用程序响应速度变慢