【发布时间】:2017-10-09 08:18:57
【问题描述】:
我有一个 QTableWidget 并且对于所有行,我将 setCellWidget 在一列中设置为一个按钮。
我想将此按钮连接到删除该行的函数。 我尝试了这段代码,但它不起作用,因为如果我只是单击我的按钮,我不会将当前行设置为按钮的行。
ui->tableWidget->insertRow(ui->tableWidget->rowCount());
QPushButton *b = new QPushButton("delete",this);
ui->tableWidget->setCellWidget(ui->tableWidget->rowCount()-1,0,b);
connect(d,SIGNAL(clicked(bool)),this,SLOT(deleteThisLine()));
...
void MainWindow::deleteThisLine()
{
int row = ui->tableWidget->currentRow();
ui->tableWidget->removeRow(row);
}
我怎样才能将我的按钮连接到一个函数,让函数知道哪个按钮(在哪一行)被按下了?
【问题讨论】:
-
在发出信号时将行号作为参数传递,并在槽中删除接收到的行号。
-
如果您不将此信号/插槽排队,您可能会遇到问题,因为您将删除行 和按钮,而它仍在处理
clickedsignal按钮。 -
@user7431005 试试这个连接:
connect(d, &QPushButton::clicked, this,&MainWindow::deleteThisLine); -
@user7431005 你试过我的解决方案了吗?
标签: c++ qt qt5 qtablewidget qpushbutton