表格未聚焦时如何设置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单元格背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章