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

Posted

技术标签:

【中文标题】表格未聚焦时如何设置QTableWidget单元格背景颜色?【英文标题】:How to set QTableWidget cell background color when table unfocused? 【发布时间】:2014-09-11 08:00:19 【问题描述】:

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

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

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

Qt 版本=4.8.5

【问题讨论】:

【参考方案1】:

使用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::itembackground-color: red;");

return QObject::eventFilter(obj, event);

在标题中:

protected:

     bool eventFilter(QObject *obj, QEvent *event);

private:
     QString string;

如您所见,使用stylesheet,您可以自定义单元格,因此您可以做的不仅仅是更改背景颜色,当然,如果您愿意的话。

【讨论】:

以上是关于表格未聚焦时如何设置QTableWidget单元格背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章

在 QTableWidget 的中心对齐单元格小部件?

QTableWidget 能不能在一个单元格内加入多个控件?

QTableWidget:检测单元格编辑开始的信号

QTableWidget 在调整内容时尊重跨度

如何从qtablewidget检测单元格中单击的按钮

转到 QTableWidget 上可视单元格的位置