gpt4 book ai didi

c++ - Qt C++ - 删除 QTableWidget 中的行

转载 作者:太空宇宙 更新时间:2023-11-04 13:00:21 28 4
gpt4 key购买 nike

我是 Qt 的新手,我想这样做

void MainWindow::test()
{
for (int i = 0 ; i < 5 ; ++i)
{
ui->tableWidget->setRowCount(ui->tableWidget->rowCount() + 1);
ui->tableWidget->setItem(i,0, new QTableWidgetItem(QString("1")));
ui->tableWidget->setItem(i,1, new QTableWidgetItem(QString("1")));
}

QPushButton *listB = new QPushButton[5];
QHBoxLayout *listLayout = new QHBoxLayout[5];
QWidget* listWidget = new QWidget[5];

for (int i = 0 ; i < 5 ; ++i)
{
ui->tableWidget->setRowCount(ui->tableWidget->rowCount() + 1);
listB[i].setText("OK");
listLayout[i].addWidget(listB + i);
listWidget[i].setLayout(listLayout + i);
ui->tableWidget->setCellWidget(i,0,listWidget + i);
connect(listB + i , &QPushButton::clicked, [=]{ui->tableWidget->removeRow(i);});
}

}

我想在 QTableWidget 的每一行添加一个 QPushButton,当我点击这个按钮时,相应的行将消失。但是,每当我单击按钮时,它都会导致“段错误”。

请指出我的代码有什么问题以及我的程序的解决方案是什么。谢谢。

最佳答案

问题是由它生成的数组引起的,似乎从数组中删除一个元素会导致索引出现问题。

void MainWindow::test()
{
ui->tableWidget->setColumnCount(2);

for (int i = 0 ; i < 5 ; ++i)
{
ui->tableWidget->setRowCount(ui->tableWidget->rowCount() + 1);
ui->tableWidget->setItem(i,0, new QTableWidgetItem(QString("1")));
ui->tableWidget->setItem(i,1, new QTableWidgetItem(QString("1")));
}


for (int i = 0 ; i < 5 ; ++i)
{
QPushButton *listB = new QPushButton;
QHBoxLayout *listLayout = new QHBoxLayout;
QWidget* listWidget = new QWidget;
ui->tableWidget->setRowCount(ui->tableWidget->rowCount() + 1);
listB->setText("OK");
listLayout->addWidget(listB);
listWidget->setLayout(listLayout);
ui->tableWidget->setCellWidget(i,0,listWidget);
connect(listB, &QPushButton::clicked, [=]{ui->tableWidget->removeRow(i);});
}

}

关于c++ - Qt C++ - 删除 QTableWidget 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44433185/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com