北京互联网建站网站,大岭山建设网站,七个php源码下载的网站,目前国内家教做的好的网站笔者开启了QTableView中交替行改变颜色#xff0c;发现笔者自定义绘制的水平滚动条#xff0c;在选中后不发生颜色改变#xff0c;这让笔者很疑惑。笔者查阅资料后发现#xff0c;自定义绘制的控件#xff0c;要自身设置颜色。当笔者解决了这个问题时#xff0c;顺手就将…笔者开启了QTableView中交替行改变颜色发现笔者自定义绘制的水平滚动条在选中后不发生颜色改变这让笔者很疑惑。笔者查阅资料后发现自定义绘制的控件要自身设置颜色。当笔者解决了这个问题时顺手就将这个问题的解决方案记录在此
问题来源
c qt中表格中含有自定义绘制部件当表格该行选中时自定义控件却未发生背景颜色改变。出现了问题
问题未解决前 问题解决后 问题解决方案
在paint绘制函数中增加这段代码。
bool isSelected option.state QStyle::State_Selected;bool hasFocus option.state QStyle::State_HasFocus;if (isSelected || hasFocus) {painter-fillRect(option.rect, QColor(240, 240, 240)); // 选中或有焦点时的颜色}else {QColor backgroundColor;if (index.row() % 2 0) {backgroundColor QColor(255, 255, 255); // 偶数行}else {backgroundColor QColor(244, 246, 248); // 奇数行}painter-fillRect(option.rect, backgroundColor); // 未选中或没有焦点时的颜色}主要含义是判断有无焦点和有无选中当获得焦点失去焦点或选中无选中都会改变颜色。