2011-02-07 6 views
1

테이블과 '행 추가'버튼으로 간단한 앱을 만들고 있습니다. Qt Creator를 사용하면 다음과 같이 할 수 있다고 생각했습니다.C++, QTableWidget에서 행 추가/제거

QObject::connect(ui->addRowButton, SIGNAL(clicked()), 
        ui->moneyTableWidget, SLOT(insertRow(1))); 

하지만 그렇게 할 수 없습니다. Qt를 처음 접했을 때 나는 틀릴 수도 있지만 문제는 insertRow가 QTableWidget의 SLOT 메소드가 아니라는 것입니다 ...

행 삽입은 어떻게해야합니까?

답변

6

클래스의 메서드에 행을 삽입하십시오. 이

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); 
/* ..... */ 
} 
1

슬롯() 매크로에 대한 인수는 인수의 형태 만있는 메소드 서명입니다. 슬롯에 전달할 인수 이름 또는 실제 인수를 포함 할 수 없습니다. 그래서 nc3b의 대답에 따라 슬롯을 추가로 수행해야합니다. 당신의 코드가하려고하는 것은 "1"타입이 하나의 파라미터를 가진 슬롯에 시그널을 연결하는 것입니다. 두가지 이유가 있습니다 : 당신은 슬롯이없고 "1"은 유효한 타입 이름이 아닙니다 어쨌든.

또한 QTableWidget :: insertRow() 은 슬롯에이며, 문서의 the public slots group에 나열되어 있습니다. 따라서 신호를 연결할 수는 있지만 신호가 일치하도록 int 인수가 있어야합니다.

관련 문제