2012-03-03 3 views
3

내가 시도 : QTableWidget의 행과 열에서 단어를 어떻게 감싸는가?

QTableWidget *j = new QTableWidget (10000, 5, centralWidget); 
    j->setColumnWidth (0, 500); 
    j->setColumnWidth (1, 30); 
    j->setColumnWidth (2, 30); 
    j->setColumnWidth (3, 320); 
    j->setColumnWidth (4, 310); 

    j->setWordWrap (true); 

또한 resizeColumnsToContentsresizeRowsToContents을 시도했지만 실패했습니다.

텍스트가 설정된 너비보다 길면 문장을 구분하고 싶습니다.
현재, 문장의 긴 부분은 표시되지 않습니다.

+0

행 높이를 명시 적으로 설정해 보았습니까? 그래도 작동하지 않으면 sizeHint()를 변경할 수 있도록 QStyledItemDelegate의 하위 클래스를 구현해야 할 수도 있습니다. 셀 내용을 편집 할 수 있습니까? – kossmoboleat

답변

4

setWordWrap은 열 크기를 변경하지 않고 텍스트의 동작을 정의합니다. 열 너비를 고정해야하는 경우 이후에 resizeRowsToContents으로 전화를 걸어 항목을 셀에 삽입합니다 (QTableWidgetItem을 통해 표에 텍스트를 추가한다고 가정 함).

항목에 포함 된 단어가 열 크기보다 넓은 경우 텍스트는 해당 지점에서 생략됩니다 (기본적으로 줄임표가 표시됩니다 : ...). 이러한 동작을 변경하려면 항목의 페인팅 기능을 다시 구현하거나 열을 늘려야합니다.

2

이 자동으로 열 크기를 조절마다 포장 단어를 조정합니다 : 일부 값을 명시 적으로 행 크기를 설정,

connect(
    tableWidget->horizontalHeader(), 
    SIGNAL(sectionResized(int, int, int)), 
    tableWidget, 
    SLOT(resizeRowsToContents())); 
0

질문 코멘트에서 언급 한 바와 같이이 작동하는 것 같다 :

tableWidget->resizeRowsToContents(); 
tableWidget->verticalHeader()->setDefaultSectionSize(50); 

내 코드의 경우 셀 내용을 줄 바꿈으로 처리하기 위해 명시 적으로 setWordWrap을 호출 할 필요가 없었습니다.

+0

문서는 기본적으로'wordWrap'이'true'라고 말합니다. 네, 전화 할 필요가 없습니다. 그러나, 나는 포장하는 것을 아무것도 보지 않는다. 열의 너비가 너무 작 으면 생략 될 수 있지만 필요에 따라 셀의 높이가 늘어나고 원하는 줄 수만큼 텍스트가 나타나는 것처럼 배치 할 수 있습니다 ... 가능합니까? –