2016-06-07 2 views
0

값이 나는 수치 데이터의 배열을 편집 할 wxGrid 있습니다. wxWidgets에 - wxGrid가 - 읽기/비 문자열 셀을 작성하는

나는 숫자 변환 문자열을 통해 모든 시간을 가지 않고 및 세포 밖으로 문자열이 아닌 데이터를 얻을 수있는 가장 좋은 방법은 무엇 궁금 해서요. SetCellEditor()를 사용하여 데이터 입력을 제어했습니다. 그렇다 atoi 함수()가 조금 추한이고 이제 stringstream와 템플릿 기능이 더 좋을 것이라는 사실에서
// numeric value into cell 
str.clear(); 
str << val1; 
m_grid4->SetCellValue(row, col, str); 
.. 
// read value from back into variable 
val = atoi(m_grid4->GetCellValue(row, col)); 

, 비 문자열을 얻는 방법 거기 값들입니다 :

현재 내가 이것을 사용 세포에서 더 좋고 밖으로?

나는 편집자와 렌더러를 찾고 있었어요하지만 그것을 알아낼 수 없습니다.

답변

1

효율성을 걱정하는 경우 모든 것을 문자열로 저장하는 기본형 wxGridStringTable 구현을 사용하는 대신 wxGridTableBase에서 파생되는 사용자 정의 테이블 클래스를 사용해야합니다. 그것은 당신의 경우에 의미가 있다면, 훨씬 덜 중요한 것은, 당신은 당신의 테이블 (문자열을 반환) GetValueAsLong() 방법 대신 GetValue()를 호출 wxGridCellNumberRenderer를 사용할 수 있습니다. 그 중

모두 특히이 BugsGridTable 보면, wxGrid sample에서 증명된다.

행운을 빈다.

+0

이미 컴파일하고 wxGrid 샘플 연주하지만 내가 찾던 보지 못했어요했다. wxGridTableBase를 더 자세히 살펴 보겠습니다. – ahagele

+0

여기에서 배울 점이 많습니다. 내 표는 단순한 wxGrid입니다. 명시 적 테이블 유형이 정의되지 않았습니다. 저는이 한 종류의 그리드를 수행하는'wxFormBuilder'로 생성했습니다. 그래서 대신 코드로 생성하고'wxGridTableBase' – ahagele

+0

@ahagele을 사용해야한다고 생각합니다. 그리드를 다시 만들 필요가 없습니다. wxGridTableBase에서 파생 된 사용자 정의 테이블을 만들고이를 그리드에 지정하면됩니다. 여전히 wxGrid가 될 것이지만 자체 테이블 구현을 사용하게 될 것입니다. – Igor