2011-09-07 3 views
6

QTableWidget에서 셀 테두리를 0px로 어떻게 설정할 수 있습니까? 가급적이면 셀 테두리의 어느면을 0으로 설정할 지 선택할 수 있지만 모두 0으로 설정하여 살 수 있습니다.QTableWidget 셀의 테두리를 0px로 설정

EDIT : 테두리를 0px로 설정하거나 색상을 흰색으로 설정하는 것이 좋습니다. QTableWidget의 setShowGrid 당신을 위해 작동 할 경우

답변

11

에 관하여 스타일 시트 (예 : "QTableView::item { border-left: 1px solid black; }")

후자는 셀 내부 테두리이므로 그리드와 잘 정렬되지 않을 수 있습니다.

각 셀에 대해 테두리를 개별적으로 변경하려면 대표자 (예 : that answer)를 작성해야합니다.

* .H :

class FocusControlDelegate : public QStyledItemDelegate { 
    public: 
     FocusControlDelegate(QObject *parent = 0); 
     virtual void initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const;   
     void setFocusBorderEnabled(bool enabled); 

    protected: 
     bool f_focus_border_enabled; 
    }; 

7

검사는 다음과 같이 매끄러운 :이 도움이

tableWidget->setShowGrid(false); 

희망, 당신은 QTableWidget::setShowGrid 모든 테두리를 해제하고, 그들 중 일부를 다시 활성화 할 수 있습니다

0

QSS를 위젯의 포커스 정책에 영향을 미치는와 사용하지 않고 나를 위해 그것을 할 수있는 가장 쉬운 방법은 다음과 같은 사용자 정의 대리자를 만들고 테이블을 설치하는 것입니다 * .cpp :

FocusControlDelegate::FocusControlDelegate(QObject *parent) : QStyledItemDelegate(parent) { 
    f_focus_border_enabled = false; 
} 

void FocusControlDelegate::setFocusBorderEnabled(bool enabled) { 
    f_focus_border_enabled = enabled; 
} 

void FocusControlDelegate::initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const { 
    QStyledItemDelegate::initStyleOption(option, index); 
    if(!f_focus_border_enabled && option->state & QStyle::State_HasFocus) 
     option->state = option->state & ~QStyle::State_HasFocus; 
} 
관련 문제