我有一个基于Qt的应用程序,有多个QTableWidget表。 我的使用场景:
现在我想在第一张桌子里面设置单元格的背景颜色,现在没有聚焦,我该怎么做?
Qt版本= 4.8.5
答案 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
您可以自定义您的单元格,因此您可以做更多的事情,而不仅仅是更改背景颜色,当然,如果您需要这样做。