Различают цвет чередующихся строк от цвета выделения в QTableWidget

У меня два QTableWidgets, это должно синхронизировать их выбор. Точнее, все, что выбрано в Таблице 2, должно быть автоматически выбрано в Таблице 1.

Все отлично работает, но если я устанавливаю свойство setAlternatingRowColors правда, у меня есть визуальная проблема. (Я думаю, что setAlternatingRowsColors — отличная функция.)

#include <QApplication>
#include <QPushButton>
#include <QTableWidget>
#include <QHBoxLayout>

QTableWidget* create() {
auto table = new QTableWidget;
table->setAlternatingRowColors(true);
table->setSortingEnabled(true);
table->setRowCount(20);
table->setColumnCount(2);
for (auto i = 0; i < 20; i++) {
{
auto item = new QTableWidgetItem(QString("%1").arg(i));
table->setItem(i, 1, item);
}
{
auto item = new QTableWidgetItem(QString("%1").arg(i));
table->setItem(i, 0, item);
}
}
return table;
}
int main(int argc, char** args) {
QApplication app(argc, args);
QTableWidget* table1 = create();
QTableWidget* table2 = create();
auto frame = new QFrame;
frame->setLayout(new QHBoxLayout);
frame->layout()->addWidget(table1);
frame->layout()->addWidget(table2);
frame->show();
QObject::connect(table2, &QTableWidget::itemSelectionChanged, [&]() {
table1->selectionModel()->clearSelection();
for (auto item : table2->selectedItems()) {
table1->item(item->row(), item->column())->setSelected(true);
}
table1->update();
});
app.exec();
}

Несмотря на то, что выбор элементов в нечетных строках выполняется, как и раньше, у пользователя нет шансов увидеть этот выбор. Кажется, что оба цвета одинаковы (но почему это так?).

Выбор неотличим от чередующегося ряда

С этой точки зрения может быть только два возможных решения. Либо измените цвет выделения, либо измените цвет alternatingRows.

Как я могу последовательно менять цвет чередующихся строк во всем приложении, которое может содержать еще больше QTableWidgets?

0

Решение

Это должно работать (в основном):

QString style = "QTableWidget { alternate-background-color: white; background-color: gray; }";
style.append(" QTableWidget::item:selected { background: red; }"); //selection color
QApplication::setStyleSheet(style);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]