2013-05-20 5 views
1

다음 스니 펫은 "오류 : 'const QRect'를 'this'인수로 'void QRect :: setHeight (int)'가 한정자 [-fpermissive]를 무시하고 컴파일하는 결과를 낳습니다.QRect에서 높이 값을 수정할 수 없습니다

어떻게 해결할 수 있습니까? 또한 h- = 80; 컴파일러는 불평하지 않습니다.

int h = this->geometry().height(); 
h -= 80; 
ui->datumTable->geometry().setHeight(h); 
+0

은'datumTable' 개체 또는'geometry' 기능 중 하나가 const' '로 표시되었습니다. 나는. 그들은 수정할 수 없습니다. –

+0

QTableWidget에 setHeight 메소드가있는 이유는 무엇입니까? – johnsonwi

답변

2

geometry()returns a const reference to a QRect object inside QTableWidget.

이것은 읽기 전용 게터입니다. 당신은 사본을 수정하고 setGeometry세터 기능을 다시 설정해야합니다

QRect rect = this->geometry(); 
int h = rect.height(); 
rect.setHeight(h - 80); 
ui->datumTable->setGeometry(rect); 
+0

정말로 감사합니다. – johnsonwi

0

datumTable에서 geometry()const QRect을 반환 것으로 보인다. 비 const 버전이 아니라면 쉬운 수정이 아닙니다.

+0

왜 위는 아직 작동하지 않겠습니까? 효과가 있을까요? – johnsonwi

+0

꽤 동일한 코드가 창문에 qt에서 효과가 있었는지, 이것은 리눅스 변종 문제/버그가 될 수 있습니까? 이것은 어려운 문제가 될 필요가 없습니다. – johnsonwi

+0

@johnsonwi 반환 값은 const 참조이므로 컴파일러는 수정하지 못하게합니다. –

1
QRect g = this->geometry().height(); 
g.setHeight(g.height()-80); 
ui->datumTable->setGeometry(g);