2011-09-07 28 views
6

Làm cách nào để đặt đường viền ô trong QTableWidget thành 0px? Tốt hơn là tôi có thể chọn các cạnh của đường viền của ô để đặt thành 0, nhưng tôi có thể sống với tất cả các cài đặt là 0.Đặt đường viền của ô QTableWidget thành 0px

CHỈNH SỬA: Đặt đường viền thành 0px hoặc đặt màu thành trắng cũng sẽ tốt.

Trả lời

11

Bạn có thể vô hiệu hóa tất cả các biên giới với QTableWidget::setShowGrid, và kích hoạt lại một số trong số họ với một bảng định kiểu (ví dụ: "QTableView::item { border-left: 1px solid black; }")

Sau đó là đường viền bên trong ô, vì vậy chúng có thể không được căn chỉnh tốt như lưới.

Nếu bạn muốn thay đổi đường viền riêng lẻ cho từng ô, bạn cần phải viết một đại biểu (như trong that answer).

7

kiểm tra nếu QTableWidget của setShowGrid sẽ làm việc cho bạn, SMTH như thế này:

tableWidget->setShowGrid(false); 

hy vọng điều này giúp, coi

0

Cách đơn giản nhất để làm điều đó đối với tôi mà không ảnh hưởng chính sách trọng tâm phụ tùng và sử dụng QSS là tạo ra các đại biểu tùy chỉnh sau và cài đặt nó cho bảng:

* .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; 
} 
Các vấn đề liên quan