【发布时间】:2014-09-11 08:00:19
【问题描述】:
我有一个基于 Qt 的应用程序,其中包含多个 QTableWidget 表。 我的使用场景:
- 我单击第一个表格中的一个单元格;焦点移动到点击的单元格;
- 我单击第二个表格中的一个单元格;焦点移至单击的单元格/表格。
现在我想设置第一个表格中的单元格的背景颜色,现在没有焦点,我该怎么做?
Qt 版本=4.8.5
【问题讨论】:
标签: qt qtablewidget
我有一个基于 Qt 的应用程序,其中包含多个 QTableWidget 表。 我的使用场景:
现在我想设置第一个表格中的单元格的背景颜色,现在没有焦点,我该怎么做?
Qt 版本=4.8.5
【问题讨论】:
标签: qt qtablewidget
使用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,您可以自定义单元格,因此您可以做的不仅仅是更改背景颜色,当然,如果您愿意的话。
【讨论】: