我在Qt Creator中有一个用作购物清单的GUI项目。我正在使用QLineEdit将项添加到QTableWidget。用户输入内容,按下QPushButton。然后,插槽将第一列中的输入和第二列中的新QPushButton添加到QTableWidget的新行。然后,我希望用户能够按下按钮并清除该行,但我不知道如何访问该插槽或发件人(我不确定正确的术语。)这是到目前为止的代码。 itemList
是我的QTableWidget,itemInput
是QLineEdit。
void MainWindow::on_btnAddItem_clicked()
{
ui->itemList->insertRow(ui->itemList->rowCount());
ui->itemList->setItem((ui->itemList->rowCount())-1,0,new QTableWidgetItem(ui->itemInput->text()));
QPushButton *clear = new QPushButton("Clear",this);
ui->itemList->setIndexWidget(ui->itemList->model()->index(ui->itemList->rowCount()-1, 1), clear);
ui->itemInput->clear();
}
这是程序最初运行的时间。点击按钮后,它会运行on_btnAddItem_clicked()
然后看起来像这样,我想让清除按钮删除它所属的行。
我是否需要创建新的广告位?有什么帮助吗?
答案 0 :(得分:0)
您需要创建自己的按钮类并继承QPushButton。像这样:
class MyButton : public QPushButton {
public:
MyButton();
QTableWidgetItem *titem;
}
在这里你是MainWindow:
void MainWindow::on_btnAddItem_clicked()
{
ui->itemList->insertRow(ui->itemList->rowCount());
ui->itemList->setItem((ui->itemList->rowCount())-1,0,new QTableWidgetItem(ui->itemInput->text()));
MyButton *clear = new MyButton("Clear",this);
clear->titem = ui->itemList->item(ui->itemList->rowCount()-1, 0);
connect(clear, SIGNAL(clicked()), SLOT(on_btnClear_Clicked()));
ui->itemList->setIndexWidget(ui->itemList->model()->index(ui->itemList->rowCount()-1, 1), clear);
ui->itemInput->clear();
}
void MainWindow::on_btnClear_Clicked()
{
MyButton *btn = (MyButton*)QObject::sender();
ui->itemList->removeRow(btn->titem->row());
}
请注意,这只是一步。