簡體   English   中英

C ++,從QTableWidget添加/刪除行

[英]C++, add/remove rows from a QTableWidget

我正在創建一個帶有表和“添加行”按鈕的簡單應用。 使用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);
/* ..... */
}

SLOT()宏的參數是僅帶有參數類型的方法簽名。 它不能包含要傳遞給廣告位的參數名稱或實際參數。 因此,根據nc3b的回答,您需要一個額外的插槽來執行該操作。 您的代碼試圖做的是將信號連接到具有一個類型為“ 1”的參數的插槽,這是錯誤的,這有兩個原因:您沒有這樣的插槽,而“ 1”不是有效的類型名稱無論如何。

同樣,QTableWidget :: insertRow() 一個插槽,因為它在文檔的公共插槽組中列出。 因此,您可以將信號連接到該信號,但是該信號需要具有int參數才能使簽名匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM