[英]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.