9

qtablewidgetで選択したセルの境界線を非表示にする(または境界線の色を白にする)方法はありますか..デフォルトでは、点線の境界線が表示されます..助けてもらえますか...

4

3 に答える 3

16

私はしたい:

ui->tableWidget->setFocusPolicy(Qt::NoFocus);

[デザイン]タブを使用してフォーカスポリシーを変更することもできます。

于 2010-11-04T11:26:30.373 に答える
15

非表示にしようとしている選択したセルの周りのこの点線の境界線は、フォーカス四角形のようです。任意のセルにフォーカスがあり、同時に選択されない場合と、その逆の場合があります。この境界線が描画されないようにする場合は、item デリゲートを使用します。ペイントする前に、アイテムの状態から State_HasFocus スタイルを削除できます。Pls、これを行う方法については、以下の例を参照してください。これは C++ です。Python への変換に問題がある場合はお知らせください。

// custom item delegate class
class NoFocusDelegate : public QStyledItemDelegate
{
protected:
    void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
};

void NoFocusDelegate::paint(QPainter* painter, const QStyleOptionViewItem & option, const QModelIndex &index) const
{
    QStyleOptionViewItem itemOption(option);
    if (itemOption.state & QStyle::State_HasFocus)
        itemOption.state = itemOption.state ^ QStyle::State_HasFocus;
    QStyledItemDelegate::paint(painter, itemOption, index);
}
...
// set the item delegate to your table widget
ui->tableView->setItemDelegate(new NoFocusDelegate());

これが役に立てば幸いです、よろしく

于 2010-01-14T02:53:06.297 に答える