2012-01-28 152 views
11

我想知道是否有人知道,也許是一個標誌來禁用當您單擊QTableWidget的單元格時出現的灰色虛線邊框。Qt QTableWidget在選定單元格周圍的灰色虛線邊框

謝謝。

+3

可能的重複:http://stackoverflow.com/questions/2055705/hide-the-border-of-the-selected-cell-in-qtablewidget-in-pyqt – 2012-01-28 14:38:50

回答

3

灰色虛線邊框表示該窗口小部件有焦點。

在小部件級別設置下面的內容應該有所斬獲。

setFocusPolicy(Qt::NoFocus) 
5

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

+1

差不多。但如果我們使用替代背景顏色,它會將選擇背景顏色更改爲替代背景顏色。添加此修復程序QTableWidget :: item:focus {border:0px;背景顏色:#<你的選擇背景顏色>}' – swdev 2014-05-23 00:11:47

5

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

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

要知道,你將失去處理鍵盤事件的能力,但鼠標事件將正常工作。

6

這樣做對我沒有影響部件的焦點策略和使用QSS將最簡單的方法是創建以下自定義委託,並安裝它表:

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

完美的作品,非常感謝你 – 2018-02-16 08:23:00

-1

QPushButton { 綱要:無; }

3

看起來好像你想在單元格獲得焦點時刪除邊框。

嘗試編輯樣式表,如下所示。

QTableWidget { 
    outline: 0; 
} 

這對我來說非常合適。

+0

真正簡單的答案 – 2018-02-23 20:18:06