• 871阅读
  • 6回复

[讨论]自定义QTableWidget右键单击单元格修改单元格背景颜色,未立即生效而是点击其他单元格才生效 [复制链接]

上一主题 下一主题
离线lwei24
 

只看楼主 倒序阅读 楼主  发表于: 2023-01-13
  1. connect(m_actBgColor, &QAction::triggered, this, &CustomTableWidget::onActBgColor);
  2. void CustomTableWidget::onActBgColor()
  3. {
  4.     QModelIndex index = this->currentIndex();
  5.     qWarning()<<"row="<<index.row()<<", col="<<index.column()<<", data="<<this->getCellContent(index.row(), index.column());
  6.     this->setItem(index.row(), index.column(), new QTableWidgetItem(QString("%1").arg(this->getCellContent(index.row(), index.column()))));
  7.     this->item(index.row(), index.column())->setBackground(Qt::red);
  8. }
各位大佬,如上代码,自定义QTableWidget右键菜单栏单击选项后能修改单元格背景颜色,未立即生效而是点击其他单元格才生效,有什么办法让立即生效吗?欢迎各位大佬们指点一二,小弟感激不尽!!

离线wanger233

只看该作者 1楼 发表于: 2023-01-13
加update();
setItem这是想干嘛?
离线lwei24

只看该作者 2楼 发表于: 2023-01-13
回 wanger233 的帖子
wanger233:加update();
setItem这是想干嘛? (2023-01-13 15:45) 

setItem,是重新设置该单元格内容。加了update();没有效果,即单击右键出现菜单栏,根据菜单栏中的设置单元格背景颜色,触发以上的onActBgColor槽函数,结果运行完了,并没有立即生效,而是点击其他单元格后,它才会生效。
离线zy1233

只看该作者 3楼 发表于: 2023-01-16
加一个emit itemChanged(item);通知model更新data
离线wanger233

只看该作者 4楼 发表于: 2023-01-16
model有颜色信息
离线wanger233

只看该作者 5楼 发表于: 2023-01-16
    QTableWidget *tableWidget = new QTableWidget(10,5,this);    tableWidget->resize(200,200);    tableWidget->setItem(0,0,new QTableWidgetItem("Jan"));    tableWidget->setItem(1,0,new QTableWidgetItem("Feb"));    tableWidget->setItem(2,0,new QTableWidgetItem("Mar"));    tableWidget ->setContextMenuPolicy(Qt::CustomContextMenu);    connect(tableWidget, &QWidget::customContextMenuRequested, [=](){        qDebug()<<"-------";        QMenu*m_pContextMenu = new QMenu();        QAction*m_pActionDel = new QAction(this);        m_pActionDel->setText(QString("bg"));        m_pContextMenu->addAction(m_pActionDel);        connect(m_pContextMenu,&QMenu::triggered,[=](){            //当前选中item            tableWidget->currentItem()->setBackgroundColor(Qt::red);            //第一个            tableWidget->itemAt(0,0)->setBackgroundColor(Qt::yellow);        });        m_pContextMenu->exec(QCursor::pos());    });
离线lwei24

只看该作者 6楼 发表于: 2023-01-29
回 wanger233 的帖子
wanger233:    QTableWidget *tableWidget = new QTableWidget(10,5,this);    tableWidget->resize(200,200);    tableWidget->setItem(0,0,new QTableWidgetItem("Jan"));    tableWidg .. (2023-01-16 17:45) 

多谢了!
快速回复
限100 字节
 
上一个 下一个