绘制tableView时 往往需要自定义scrollBar的样式
QTableView *table = new QTableView(this);
table->setGeometry(20,20,600,500);
QString scrollStyle(
//整体布局
"QScrollBar:vertical {"
"border-left: 1px solid rgb(99, 174, 236);"
"border-top:1px solid rgb(99, 174, 236);"
"border-bottom:1px solid rgb(99, 174, 236);"
"background: rgb(214, 239, 252);"
"width: 15px;"
"margin: 0px 0 0px 0;"
"}"
//拉的手柄布局
"QScrollBar::handle:vertical {"
"background: white;"
"border-top: 1px solid rgb(99, 174, 236);"
"border-bottom: 1px solid rgb(99, 174, 236);"
"min-height: 20px;"
"}"
//两侧的箭头布局
"QScrollBar::add-line:vertical {"
"border: 1px solid rgb(99, 174, 236);"
"}"
"QScrollBar::sub-line:vertical {"
"border: 1px solid rgb(99, 174, 236);"
"}"
"QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical {"
"border: 1px solid rgb(99, 174, 236);;"
"width: 20px;"
"height: 20px;"
"}"
//点击ScrollBar 显示的背景色
"QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {"
"border: 0px solid rgb(44, 113, 177);"
"background: rgb(214, 239, 252);"
"}"
"QScrollBar:horizontal {"
"border-top: 1px solid rgb(99, 174, 236);"
"border-left: 1px solid rgb(99, 174, 236);"
"border-right: 1px solid rgb(99, 174, 236);"
"background: rgb(213,239,252);"
"height: 15px;"
"margin: 0px 0 0px 0;"
"}"
"QScrollBar::handle:horizontal {"
"background: white;"
"border-left: 1px solid rgb(99, 174, 236);"
"border-right: 1px solid rgb(99, 174, 236);"
"min-width: 20px;"
"}"
"QScrollBar::add-line:horizontal {"
"border: 1px solid rgb(99, 174, 236);"
"}"
"QScrollBar::sub-line:horizontal {"
"border: none;"
"}"
"QScrollBar::up-arrow:horizontal , QScrollBar::down-arrow:horizontal {"
"border: 1px solid rgb(44, 113, 177);"
"width: 20px;"
"height: 20px;"
"}"
"QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {"
"border: 0px solid rgb(44, 113, 177);"
"background: rgb(214, 239, 252);"
"}"
);
QString scSty = scrollStyle;
QStandardItemModel *model = new QStandardItemModel(table);
table->setModel(model);
model->insertColumns(0,20);
model->insertRows(0,200);
//布局时需要注意设置style的顺序 顺序不同 造成的结果也不尽相同
this->setStyleSheet(scSty);
table->setStyleSheet("selection-background-color: rgb(44, 112, 177);"
"border:1px solid rgb(97, 172, 240); background-color: white;");
table->setSelectionBehavior(QAbstractItemView::SelectRows);
table->setEditTriggers(QAbstractItemView::NoEditTriggers);
table->setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOn);
table->setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOn);
table->show();
两者样式写反时 结果呢?
table->setStyleSheet("selection-background-color: rgb(44, 112, 177);"
"border:1px solid rgb(97, 172, 240); background-color: white;");
this->setStyleSheet(scSty);
所以说 写布局时 需要注意样式 布局的先后顺序 才能得出想要的结果。