查看完整版本: [-- 自定义QTableWidget右键单击单元格修改单元格背景颜色,未立即生效而是点击其他单元格才生效 --]

QTCN开发网 -> Qt基础编程 -> 自定义QTableWidget右键单击单元格修改单元格背景颜色,未立即生效而是点击其他单元格才生效 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

lwei24 2023-01-13 14:24

自定义QTableWidget右键单击单元格修改单元格背景颜色,未立即生效而是点击其他单元格才生效

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


wanger233 2023-01-13 15:45
加update();
setItem这是想干嘛?

lwei24 2023-01-13 16:31
wanger233:加update();
setItem这是想干嘛? (2023-01-13 15:45) 

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

zy1233 2023-01-16 10:04
加一个emit itemChanged(item);通知model更新data

wanger233 2023-01-16 17:33
model有颜色信息

wanger233 2023-01-16 17:45
    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 2023-01-29 17:02
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) 

多谢了!


查看完整版本: [-- 自定义QTableWidget右键单击单元格修改单元格背景颜色,未立即生效而是点击其他单元格才生效 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled