2012-01-28 11 views

Odpowiedz

3

Ta szara kropkowana granica wskazuje, że ten widget ma fokus.

Ustawienie poniżej na poziomie widgetu powinno załatwić sprawę.

setFocusPolicy(Qt::NoFocus) 
5

qApp->setStyleSheet (" QTableWidget::item:focus { border: 0px }");

+1

prawie. ale jeśli użyjemy alternatywnego koloru tła, zmieni on kolor tła zaznaczenia na alternatywny kolor tła. Dodaj tę poprawkę 'QTableWidget :: item: focus {border: 0px; background-color: # } ' – swdev

5

C++: tableWidget->setFocusPolicy(Qt::NoFocus);

Python: tableWidget.setFocusPolicy(QtCore.Qt.NoFocus)

Należy pamiętać, że tracisz zdolność przetwarzania zdarzeń klawiaturowych, ale zdarzenia myszy będzie działać dobrze.

6

Najłatwiej zrobić to za mnie bez wpływu na politykę ostrości widgetu i korzystania QSS jest stworzenie następujące niestandardowe delegata i zainstalować go na stole:

* .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; 
    }; 

* .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; 
} 
+0

działa idealnie, bardzo dziękuję –

3

Wygląda na to, że chcesz usunąć ramkę, gdy komórka zorientuje się.

Spróbuj edytować arkusz stylów w następujący sposób.

QTableWidget { 
    outline: 0; 
} 

To zadziałało idealnie.

+0

prawdziwa prosta odpowiedź –

Powiązane problemy