2012-01-28 134 views

答えて

3

その灰色の点線の枠は、そのウィジェットにフォーカスがあることを示します。

ウィジェットレベルで以下を設定すると、そのトリックを行う必要があります。

setFocusPolicy(Qt::NoFocus) 
5

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

+1

代替背景色を使用すると、選択背景色が代替背景色に変更されます。この修正を加える 'QTableWidget :: item:focus {border:0px;背景色:#<選択した背景色>} ' – swdev

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

は完璧に動作します、ありがとうございました –

-1

のQPushButton { 概要:なし; }

3

セルがフォーカスを取得したときに枠線を削除したいようです。

スタイルシートを次のように編集してみてください。

QTableWidget { 
    outline: 0; 
} 

これは私にとって完璧に機能しました。

+0

本当の簡単な答え –

関連する問題