2017-05-19 5 views
0

나는 Qt는 새로운 해요. QTableWidget에 행 항목을 객체로 캐스팅하려고합니다.Qt : QTableRowItem을 Object로 변환하는 방법은 무엇입니까?

지금까지 내가 QList으로 QTableWidget을 채우기 위해 관리했습니다

내 테이블에서
header.h 
QList<Inventory> inventories; 

int row = 0; 
int rowCount = ui->tableItems->rowCount(); 

ui->tableItems->insertRow(rowCount); 

foreach(Inventory inventory, this->inventories) 
{ 

    QTableWidgetItem *code = new QTableWidgetItem(inventory.getName()); 
    QTableWidgetItem *name = new QTableWidgetItem(inventory.getCode()); 
    QTableWidgetItem *price = new QTableWidgetItem(GlobalFunctions::doubleToMoney(this, inventory.getPrice())); 

    ui->tableItems->setItem(row,0,code); 
    ui->tableItems->setItem(row,1,name); 
    ui->tableItems->setItem(row,2,price);  

    row++; 
} 

, 나는이를 사용하여 행을 선택합니다. 내가 선택한 행을 얻기 위해 관리했습니다 enter image description here

void CreateSalesWindow::removeItem() 
{ 
    qDebug() << "Remove Item" << ui->tableItems->currentIndex().column(); 
    this->salesdetails.removeAt(ui->tableItems->currentIndex().column() - 1); 
    this->refreshItemList(); 
} 

, 객체에 다시 내 행을 캐스팅 할 수있는 간단한 방법이있다. 나는 C# .Net 배경에서 왔는데, 나는 이것을 (단지 예제와 같이) 다시 쉽게 캐스팅 할 수있다. SO 및 설명서에서 좋은 해결책을 찾지 못했습니다.

Inventory selectedInventory = (Inventory) ui->tableItems->selectedItem().getValue(); 

qDebug() << selectedInventory.getPrice(); 
// 1699.75 

ps. 나는 또한 테이블에서 선택된 행에서 QList <>에서 항목을 제거 할.

감사합니다. Qt를 처음 접했을 때,이 문제를 처리 할 때 훨씬 더 나은 접근 방식을 사용할 수 있습니다. 뭔가 명확하지 않은 경우 의견을 제기하여 문제를 해결할 수 있도록하십시오.

답변

1

나는 QTableWidget 그 자체에 익숙하지 않지만 일반적으로 Qt의 모델/뷰 클래스에서 row 메서드를 사용하여 모델의 기본 데이터 행 인덱스에 액세스 한 다음 사용자 정의 모델에서 원래 데이터에 액세스해야합니다 (모델 구현에 따라 다름). 이 같은 사건 뭔가에

다음 getInventory(int index) 방법은 인덱스를 통해 개체에 액세스하는 사용자 정의 방법은

int rowIndex = ui->tableItems->selectedItems().first().row(); 
// or this should also work to get the current index directly 
int rowIndex = ui->tableItems->currentIndex().row(); 
Inventory *selectedInventory = ui->tableItems->model()->getInventory(rowIndex); 

이다 (나는 당신이 그렇게 데이터를 저장하고 QAbstractItemModel 또는 무언가에서 파생 모델을 가지고 생각 QTableWidget에서 확인하십시오.) 내가 어떻게 할 것인지 적어도입니다

, 당신은 Introduction to Model/View Programming에서 Qt를 가진 일반 모델/뷰 프로그래밍에 대한 자세한 내용을보실 수 있습니다.

+0

감사합니다! 나는 Inventory inventory = this-> inventories.at (rowIndex)를 시도했다. 그것은 나를 위해 일했습니다. – Binsoi