2017-11-21 3 views
-3

을 tablewidget :Qt는 내가 이런 tablewidget을 만들어 편집 상자

Tablewidget

I 셀 (0) 값 (더블 클릭)를 편집 할

하지만 편집 상자가 너무 커서 그것을 셀 커버 (1) :

Tablewidget2

가 어떻게 그 후 세포를 덮고있는 편집 상자를 방지합니까?

+0

호'테이블 -> resizeColumnsToContents() '[resizeColumnsToContents (http://doc.qt.io/qt-4.8/qtableview.html#resizeColumnsToContents) – Simon

+0

I table-> resizeColumnsToContents();를 추가하십시오. 편집 상자는 너무 커서 이후에 셀을 감싸기에는 너무 크다. – Stone

답변

0

자신의 자식 QStyledItemDelegate를 만들고 QStyledItemDelegate :: createEditor 메서드를 재정의해야합니다. 그런

예시 :

QWidget * MyStyledItemDelegate::createEditor(QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index) const 
{ 
    QWidget * editor = QStyledItemDelegate::createEditor(parent, option, index); 
    editor->setWidth(20); // Handle editor here. 
    return editor; 
} 
+0

QTableWidget * table; table-> setItemDelegate (new MyStyledItemDelegate); – Stone

+0

또 다른 질문, setWidth (width)를 원한다면 MyStyleItemDelegate에 너비 매개 변수를 전달해야합니다. 그것을하는 방법? 감사. – Stone

+0

일반적인 C++ 문제입니다. 클래스에 매개 변수를 전달하는 방법. 다수 및 많은 방법, 1) MyStyledItemDelegate() * 테이블의 생성자를 통해, table-> setItemDelegate (new MyStyledItemDelegate (20)); 생성자를 다시 정의해야합니다. 2) "setter"기능 사용 MyStyledItemDelegate * myDelegate = 새 MyStyledItemDelegate; myDelegate-> setEditorWidth (20); setEditorWidth()를 구현해야 함 – stanislav888