C++,从QTable控件中添加/删除行

C++,从QTable控件中添加/删除行,c++,qt4,qtablewidget,C++,Qt4,Qtablewidget,我正在创建一个带有表格和添加行按钮的简单应用程序。使用Qt Creator,我想我可以做如下事情: QObject::connect(ui->addRowButton, SIGNAL(clicked()), ui->moneyTableWidget, SLOT(insertRow(1))); 但我不能。我对Qt很陌生,我可能错了,但我认为问题在于insertRow不是QTableWidget的SLOT方法 如何实现行插入?在类的方法中插入行

我正在创建一个带有表格和添加行按钮的简单应用程序。使用Qt Creator,我想我可以做如下事情:

QObject::connect(ui->addRowButton, SIGNAL(clicked()),
                     ui->moneyTableWidget, SLOT(insertRow(1)));
但我不能。我对Qt很陌生,我可能错了,但我认为问题在于insertRow不是QTableWidget的SLOT方法


如何实现行插入?

在类的方法中插入行。试试这个

class TableDialog : public QDialog
{
    Q_OBJECT
public:
    TableDialog(QWidget *parent = 0);
private slots:
    void addRow();
private:
    QTableWidget *tableWidget;
    QDialogButtonBox *buttonBox;
};
以及部分实施:

TableDialog::TableDialog(QWidget *parent) : QDialog(parent) {
tableWidget = new QTableWidget(10, 2);
/* ..... */
connect(addRowButton, SIGNAL(clicked()), this, SLOT(addRow()));

/* ..... */
}

void TableDialog::addRow() {
    int row = tableWidget->rowCount();
    tableWidget->insertRow(row);
/* ..... */
}

在类的方法中插入行。试试这个

class TableDialog : public QDialog
{
    Q_OBJECT
public:
    TableDialog(QWidget *parent = 0);
private slots:
    void addRow();
private:
    QTableWidget *tableWidget;
    QDialogButtonBox *buttonBox;
};
以及部分实施:

TableDialog::TableDialog(QWidget *parent) : QDialog(parent) {
tableWidget = new QTableWidget(10, 2);
/* ..... */
connect(addRowButton, SIGNAL(clicked()), this, SLOT(addRow()));

/* ..... */
}

void TableDialog::addRow() {
    int row = tableWidget->rowCount();
    tableWidget->insertRow(row);
/* ..... */
}

SLOT宏的参数是仅具有参数类型的方法签名。它不能包含要传递到插槽的参数名称或实际参数。根据nc3b的回答,这就是为什么您需要额外的插槽来执行该操作。您的代码试图做的是将信号连接到一个插槽,其中一个参数的类型为1,这是错误的,原因有两个:您没有这样的插槽,而且1不是有效的类型名


此外,QTableWidget::insertRow是一个插槽,如文档中所列。因此,您可以将信号连接到它,但信号需要有一个int参数才能使签名匹配。

插槽宏的参数是仅具有参数类型的方法签名。它不能包含要传递到插槽的参数名称或实际参数。根据nc3b的回答,这就是为什么您需要额外的插槽来执行该操作。您的代码试图做的是将信号连接到一个插槽,其中一个参数的类型为1,这是错误的,原因有两个:您没有这样的插槽,而且1不是有效的类型名

此外,QTableWidget::insertRow是一个插槽,如文档中所列。因此,您可以将一个信号连接到它,但该信号需要有一个int参数才能使签名匹配