QTableWidget 单击右键选择指定单元格修改其背景时,单元格内容不见了
如题,由QTableWidget派生出一个自定义的CustomTableWidget,并创建其右键菜单,通过右键菜单选择指定的单元格修改它的背景颜色,具体代码如下:
void CustomTableWidget::onActBgColor()
{
this->item(index.row(), index.column())->setBackground(Qt::yellow);
m_styleItemDelegate->setEnableClicked(true);
m_styleItemDelegate->setBgColor(Qt::yellow);
update();
}
相应的QStyledItemDelegate派生类的代理代码如下:
void CustomStyleItemDelegate::paint(QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
QStyleOptionViewItem viewOption(option);
initStyleOption(&viewOption, index);
QTextOption op;
op.setAlignment(Qt::AlignCenter);
//QModelIndexList indexs = selectionModel()->selectedIndexes();
if(option.state.testFlag(QStyle::State_HasFocus))
{
viewOption.state = viewOption.state ^ QStyle::State_HasFocus;
viewOption.palette.setColor(QPalette::Normal, QPalette::HighlightedText, Qt::black);
}
if (option.state.testFlag(QStyle::State_Selected))
{
if(m_isClicked)
{
painter->setPen(m_backgroundColor);
painter->setBrush(m_backgroundColor);
painter->fillRect(viewOption.rect, m_backgroundColor);
//painter->drawText(viewOption.rect, index.data(Qt::DisplayRole).toString(), op); ->文本显示无效
}
else
{
viewOption.state &= ~QStyle::State_Selected;
}
}
QStyledItemDelegate::paint(painter, viewOption, index);
}
各位大佬,帮忙看看,为什么右键菜单后,虽然改变了指定单元格的背景颜色,但是单元格的内容却不见了,有什么办法可以让修改背景颜色的同时,又不丢失其内容吗?小弟在线等,欢迎各位大佬们指点一二,在此感激不尽!!!
相关推荐
QTableWidget 实现鼠标划过时,整行背景颜色及字体边框的变化
QTableWidget 实现鼠标划过时,整行背景颜色的变化。支持设置颜色值、支持自定义窗口。
QTableWidget完整操作
#QTableWidget操作 //设置表格列 tablewidget->setColumnCount(4); //设置表格行 tablewidget->setRowCount(4); //指定某个行或者列的大小 tableWidget->setColumnWidth(3,200); tableWidget->setRowHeight(3,60); //添加一行 int row = tableWidget->rowCount();//获取表格中当前总行数 tableWidg
Qt QTableWidget
下图lineEdit中的数值是好用ms值,我累加的方式是(row+1)*2,就是在原有的行数上+1再翻倍,可以看到在三千万/2的时候,耗时是153毫秒,还算可以,然后是提示错误.不能翻倍为六千万了,如果在ui界面创建的表,没有给单元格赋值,然后直接获取,或报错,这个错我使用try catch() 都没有搞定,所以就是给它初始化。当使用以上方法后,会出现高亮的bug,点击后会高亮遮盖值,这里虽然已经不允许编辑,但是视觉效果还是不好,所以需要再添加。在使用item.text之前,一定是初始化过的。
QT QTablewidget的使用
QT QTablewidget的使用,包括QTablewidget的各种相关操作
QTableWidget-表格的合并与拆分
qt实现表格的合并与拆分功能


