1、QTableWidget样式设置及说明
LoadInforWidget->setShowGrid(false);//不显示网格
LoadInforWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//选中行为为一行
LoadInforWidget->setSelectionMode(QAbstractItemView::SingleSelection);//单行选中
LoadInforWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
LoadInforWidget->setFocusPolicy(Qt::NoFocus);//不设置鼠标焦点,不会出现某一行高亮的同时,鼠标所在单元格别选中高亮的情况
LoadInforWidget->horizontalHeader()->setHighlightSections(false);//高亮选中内容的所在列标题
LoadInforWidget->horizontalHeader()->setStretchLastSection(true);
2、不能完全选中某一行
问题描述:三个QPushButton(透明背景)放到一个QHBoxLayout,QHBoxLayout放到一个QWidget,使用setCellWidget把QWidget放到QTableWidget的某一单元中,出现的问题,当选中某一行时,所在行的其他单元格(QTableWidgetItem)均可以选中,只有这个单元格看起来没有选中(单元格依旧显示QTableWidget的背景色)。
原因:其实都选中了,只是被QWidget的背景色挡住了,换句话说就是QWidget是不透明的,因为单元格显示的是QTaleWidget的背景色,误导我一直以为单元格显示的是QTableWidget的背景色,以为是因为setCellWidget的原因导致内有选中,其实是QWidget默认显示了QTableWidget的颜色(并没有给QWidget设置Parent),所以只要将QWidget设置背景透明即可。尝试了两种进行背景透明:
使用函数setAttribute(Qt::WA_TranslucentBackground, true); 效果窗口整体透明,但窗口控件不透明。效果如下:
使用setStyleSheet("background-color:transparent "); 效果窗口整体透明,窗口控件透明。效果如下:
3、setSpan()合并单元格出现的问题
问题描述:QTablewidget水平header与垂直header均不显示,使用setSpan()合并单元格之后左上角的第一个单元格的左侧与顶部的边框不显示了,没有找到问题原因,最终自己画了边框补上的,效果差不多。
QTableView::item { border-left: 1px solid rgb(157,158, 159);
border-top: 1px solid rgb(157,158, 159); }