代码之家  ›  专栏  ›  技术社区  ›  navigator

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

  •  1
  • navigator  · 技术社区  · 10 年前

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

    1. 我单击第一个表格中的单元格;焦点移动到所点击的单元格;
    2. 我单击第二个表格中的单元格;焦点移动到单击的单元格/表格。

    现在我想设置第一个表中的单元格的背景色,该表现在没有焦点,我该怎么做?

    Qt版本=4.8.5

    1 回复  |  直到 10 年前
        1
  •  0
  •   Jablonski    10 年前

    使用 eventFilter 或子类 QTableWidget 。如果你专注于 tableWidget -重置 stylesheet ,如果你注意力集中,请特别注意 样式表 (代码中的示例)

    例如:

    {
    //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;
    

    正如你所看到的 样式表 你可以自定义你的单元格,当然,如果你想要的话,你可以做的不仅仅是改变背景色。