版权声明:转载请说明 https://blog.csdn.net/weixin_41712355/article/details/81502085
在构造函数使用前两句设置每次点击一个item能够选中一整行以及编辑item功能
pushButton槽里面获取当前点击的item行列数
然后通过循环使用text().toStdString()获取item的内容并显示到指定的item上
ui->tableWidget->setItem(now_row+1,now_column,e);
//设置选择行为时每次选择一行
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
//设置任何时候都可以编辑
ui->tableWidget->setEditTriggers(QAbstractItemView::CurrentChanged);
void Mainwindow::on_pushButton_clicked(){
//获取当前点击的item行列数
int now_column = ui->tableWidget->currentColumn();
int now_row = ui->tableWidget->currentRow();
//如果不是点击在第一列则获取到第一列
if(now_column != 0)
{
now_column = 0;
}
//表格有5列
for(int i =0;i<5;i++)
{
string qsa1 = ui->tableWidget->item(now_row,now_column)->text().toStdString();
QString s1 = QString::fromStdString(qsa1);
//传入qsting值
QTableWidgetItem *e =new QTableWidgetItem(s1);
ui->tableWidget->setItem(now_row+1,now_column,e);
now_column++;
}
}
以上代码实现会出现问题
当表格里面的item是空的时候程序会中断
因为当item是空的时候,
ui->tableWidget->item(now_row,now_column);
得到的是一个空指针所以不能用text()去获取文本!
void Load_a_reference::on_pushButton_clicked()
{
qDebug()<<123<<endl;
//判断是否选中item
if (ui->tableWidget->selectedItems().size() == 0)
{
qDebug() << "select items count" << ui->tableWidget->selectedItems().size();
return;
}
int now_column = ui->tableWidget->currentColumn();
int now_row = ui->tableWidget->currentRow();
if(now_column != 0)
{
now_column = 0;
}
for(int i =0;i<5;i++)
{
//如果item是空的则跳过
if (ui->tableWidget->item(now_row, now_column) == NULL)
{
continue;
}
//s1是一个QString全局变量
s1 = ui->tableWidget->item(now_row, now_column)->text();
QTableWidgetItem *e =new QTableWidgetItem(s1);
ui->tableWidget->setItem(now_row+1,now_column,e);
now_column++;
}
}