QTableWidget - отображание выделенной ячейки цветом, если у cellWidget установлен иной цвет
У меня есть таблица QTableWidget, заполненная QWidget с помощью метода QTableWidget::setCellWidget
Пока в QWidget в background-color цвета нет, то всё работает хорошо — при клике на ячейку она выделяется цветом (на скриншоте слева - синий цвет).
Если же задать QWidget цвет (на скриншоте красный), то при клике на эту ячейку, она больше не выделяется синим (стандартным) цветом.
Как сделать так, чтобы при клике на ячейку, в которой находится
cellWidget, она всегда выделялась обычным (стандартным) цветом?
Ответы (1 шт):
Автор решения: Sergey Tatarincev
→ Ссылка
решение конечно через пень-колоду (по хорошему вам лучше отказаться от TableWidget и перейти к TableView. С моделями все на порядок проще)
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->tableWidget->selectionModel(),SIGNAL(selectionChanged(QItemSelection,QItemSelection)),this,SLOT(myslotselectionChanged(QItemSelection,QItemSelection)));
...
}
...
MainWindow::myslotselectionChanged(QItemSelection was, QItemSelection now)
{
// тут покрасим то с чего сняли выделение
foreach (QModelIndex idx, was.indexes()) {
ui->tableWidget->cellWidget(idx.row(),idx.column())->setStyleSheet("background-color : red;");
}
// а тут красим то что выделено сейчас
foreach (QModelIndex idx, now.indexes()) {
ui->tableWidget->cellWidget(idx.row(),idx.column())->setStyleSheet("background-color : blue;");
}
}
