背景
Qt 绘制控件样式会使用当前系统风格的 UI 显示样式。
问题描述
①.概述
QTableWidget 表格控件在 Win10 系统下横向和纵向表头没有底部分隔线,如下图所示:
②.原因
导致该现象的原因是因为 Qt 绘制控件样式会使用当前系统风格的UI显示样式,Win10 系统表格样式如下:
绘制分隔线
①.概述
通过设置表头的 StyleSheet 根据需要绘制上下左右四个边界线。
②.横向表头
ui.tableWidget->horizontalHeader()->setStyleSheet(
"QHeaderView::section{"
"border-top:0px solid #E5E5E5;"
"border-left:0px solid #E5E5E5;"
"border-right:0.5px solid #E5E5E5;"
"border-bottom: 0.5px solid #E5E5E5;"
"background-color:white;"
"padding:4px;"
"}"
);
③.纵向表头
ui.tableWidget->verticalHeader()->setStyleSheet(
"QHeaderView::section{"
"border-top:0.5px solid #E5E5E5;"
"border-left:0px solid #E5E5E5;"
"border-right:0.5px solid #E5E5E5;"
"border-bottom: 0px solid #E5E5E5;"
"background-color:white;"
"padding:4px;"
"}"
);
设置界面风格
①.QStyleFactory
QStyleFactory 类用于创建 QStyle,其静态方法 keys 可以获取当前支持的所有界面风格。
for (auto & key : QStyleFactory::keys())
{
qDebug() << key;
}
②.设置界面风格
通过 QApplication 的 setStyle 方法可以设置界面显示风格。
QApplication::setStyle(QStyleFactory::create("Fusion"));