2014-09-11 895 views
1

我有一個基於Qt的應用程序和多個QTableWidget表。 我的使用場景:如何設置QTableWidget單元格背景顏色時表不聚焦?

  1. 我點擊第一個表格中的一個單元格;焦點移動到點擊單元格;
  2. 我點擊第二個表格中的一個單元格;焦點移動到單擊的單元格/表格中。

現在我想設置第一個表格中的單元格的背景顏色,它現在沒有重點,我該怎麼做?

版本的Qt 4.8.5 =

回答

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你可以定製你的單元格,所以你可以做更多的事情比改變背景顏色,當然,如果你想這樣做。

相關問題