void userinformation::on_tableView_doubleClicked(const QModelIndex &index) { int curRow=ui->tableView->currentIndex().row(); QAbstractItemModel *modessl = ui->tableView->model(); QModelIndex indextemp; QVariant data; QString infor[10]; QDateTime datetime; QString datetime_str1,datetime_str2,datetime_str3; for(int i=0;i<10;i++){ indextemp=modessl->index(curRow,i); data=modessl->data(indextemp); if(i==3){ datetime=data.toDateTime(); datetime_str1=datetime.toString("yyyy-MM-dd hh:mm:ss"); } else if(i==5){ datetime=data.toDateTime(); datetime_str2=datetime.toString("yyyy-MM-dd hh:mm:ss"); } else if(i==6){ datetime=data.toDateTime(); datetime_str3=datetime.toString("yyyy-MM-dd hh:mm:ss"); } else{ infor[i]=data.toString(); } } QString show=QString("书籍序号:"+infor[0]+"\n名称:"+infor[1]+"\n作者:"+infor[2]+"\n出版日期:"+datetime_str1+"\n借出时间:"+datetime_str2+"\n应归时间:"+datetime_str3+"\n是否归还:"+infor[6]); QMessageBox::about(NULL,"详情",show); }
时间: 2023-12-31 21:03:59 浏览: 142
这段代码实现了在用户双击表格中的某一行时,弹出一个消息框显示该行的详细信息。具体实现过程如下:
1. 获取当前双击的行号:
```
int curRow=ui->tableView->currentIndex().row();
```
2. 获取表格模型:
```
QAbstractItemModel *modessl = ui->tableView->model();
```
3. 定义变量并遍历该行的所有列:
```
QModelIndex indextemp;
QVariant data;
QString infor[10];
QDateTime datetime;
QString datetime_str1,datetime_str2,datetime_str3;
for(int i=0;i<10;i++){
indextemp=modessl->index(curRow,i);
data=modessl->data(indextemp);
// 如果是日期字段,则将其转换为字符串格式
if(i==3){
datetime=data.toDateTime();
datetime_str1=datetime.toString("yyyy-MM-dd hh:mm:ss");
}
else if(i==5){
datetime=data.toDateTime();
datetime_str2=datetime.toString("yyyy-MM-dd hh:mm:ss");
}
else if(i==6){
datetime=data.toDateTime();
datetime_str3=datetime.toString("yyyy-MM-dd hh:mm:ss");
}
else{
infor[i]=data.toString();
}
}
```
4. 将获取到的信息拼接成字符串并弹出消息框:
```
QString show=QString("书籍序号:"+infor[0]+"\n名称:"+infor[1]+"\n作者:"+infor[2]+"\n出版日期:"+datetime_str1+"\n借出时间:"+datetime_str2+"\n应归时间:"+datetime_str3+"\n是否归还:"+infor[6]);
QMessageBox::about(NULL,"详情",show);
```
阅读全文