当表格未聚焦时,如何设置QTableWidget单元格背景色?

当表格未聚焦时,如何设置QTableWidget单元格背景色?,qt,qtablewidget,Qt,Qtablewidget,我有一个基于Qt的应用程序,它有多个QTableWidget表。 我的使用场景: 我单击第一个表中的单元格;焦点移动到单击的单元格 我单击第二个表中的单元格;焦点移动到单击的单元格/表格 现在,我想设置第一个表中的单元格的背景色,这是现在未聚焦的,我如何才能做到这一点 Qt版本=4.8.5使用eventFilter或子类QTableWidget。如果将焦点放在某个表格小部件上-重置样式表,如果将焦点放在外-应用特殊的样式表(代码中的示例) 例如: { //somewhere in constru

我有一个基于Qt的应用程序,它有多个QTableWidget表。 我的使用场景:

  • 我单击第一个表中的单元格;焦点移动到单击的单元格
  • 我单击第二个表中的单元格;焦点移动到单击的单元格/表格
  • 现在,我想设置第一个表中的单元格的背景色,这是现在未聚焦的,我如何才能做到这一点


    Qt版本=4.8.5使用
    eventFilter
    或子类
    QTableWidget
    。如果将焦点放在某个
    表格小部件上
    -重置
    样式表
    ,如果将焦点放在外-应用特殊的
    样式表
    (代码中的示例)

    例如:

    {
    //somewhere in constructor 
    string = ui->tableWidget_2->styleSheet();//save normal stylesheet
    }
    
    
    bool MainWindow::eventFilter(QObject *obj, QEvent *event)
    {
        if(obj == ui->tableWidget_2 && event->type()==QEvent::FocusIn)
            ui->tableWidget_2->setStyleSheet(string);//or set just " "
        if(obj == ui->tableWidget_2 && event->type()==QEvent::FocusOut)
            ui->tableWidget_2->setStyleSheet("QTableWidget::item{background-color: red;}");
    
    return QObject::eventFilter(obj, event);
    }
    
    在标题中:

    protected:
    
         bool eventFilter(QObject *obj, QEvent *event);
    
    private:
         QString string;
    
    正如您所看到的,通过
    样式表
    您可以自定义单元格,因此您可以做的不仅仅是更改背景颜色,当然,如果您需要的话