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

时间:2014-09-11 08:00:20

标签: qt qtablewidget

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

  1. 我点击第一张桌子内的一个单元格;焦点移动到单击的单元格;
  2. 我点击第二张桌子内的一个单元格;焦点移动到单击的单元格/表格。
  3. 现在我想在第一张桌子里面设置单元格的背景颜色,现在没有聚焦,我该怎么做?

    Qt版本= 4.8.5

1 个答案:

答案 0 :(得分:0)

使用eventFilter或子类QTableWidget。如果您专注于某些tableWidget - 重置stylesheet,如果您得到关注 - 请应用特殊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;

正如您所看到的,使用stylesheet您可以自定义您的单元格,因此您可以做更多的事情,而不仅仅是更改背景颜色,当然,如果您需要这样做。