Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ setBackground для заголовка QTableWidget

Автор: tradmir@mail.ru 26.1.2018, 22:29

Хочу задать цвет фона для заголовка колонки в QTableWidget.
Цвет вроде ставится, но чем-то подавляется, цвет шрифта задается.

Кто знает, подскажите.

С уважением,
Радмир

Автор: tradmir@mail.ru 5.2.2018, 19:47

И такая интересная фича:
На первой машине стоит Windows XP 3SP 32-bit.
На второй то же самое.

На первой машине после вызова
ui->tableWidget->setStyleSheet("QTableWidgetItem {background-color: yellow;}");
цвет фона стал устанавливаться везде: а именно, на заголовках таблицы, на клетках, причем можно установить и в отдельной клетке или заголовке какой хотите вне зависимости от других мест.

На второй машине, цвет на заголовках удалось установить с помощью вызова:
QString ss = "QHeaderView::section { background: rgb(%1,%2,%3);}").arg®.arg(g).arg(B); //цвет задан в RGB
ui->tableWidget->setStyleSheet(ss);
После этого можно установить один цвет для всей таблицы, заголовок и клеток. Поменять цвет в отдельном заголовке не удается, в любой клетке можно

Можно ли верхними или нижними полушариями постигнуть такое поведение?

С уважением,
Радмир

Автор: Алексей1153 6.2.2018, 7:45

tradmir@mail.ru, почитай тут http://doc.qt.io/archives/qt-5.5/stylesheet-syntax.html

можно попробовать варианты:

вариант 1) задать виджету заголовка свойство и по этому свойству покрасить

//задаём значение свойства
// тоже должно проканать, я думаю. Тут нужно будет проверять свойство [xxxx="1"]
//ui->tableWidget->horizontalHeader() ->SetProperty("xxxx","1");

//но можно уже и готовое свойство заюзать, например "windowTitle"
ui->tableWidget->horizontalHeader() ->setWindowTitle("needtopaint");

//красим по свойству "windowTitle"
QString s=QString("QHeaderView[windowTitle="needtopaint"]{background: %1}").arg(somecolor.name());
ui->tableWidget->viewport()->setStyleSheet(s);


вариант 2) покрасить все заголовки, лежащие непосредственно на виджете таблицы
QString s=QString("QWidget > QHeaderView{background: %1}").arg(somecolor.name());
ui->tableWidget->viewport()->setStyleSheet(s);


Не компилировал и не тестировал, могут быть опечатки :)

Автор: tradmir@mail.ru 12.2.2018, 7:51

Я наверное о другом:
Эта связка
QString SS =QString("QHeaderView::section { background: rgb(%1,%2,%3);}").arg®.arg(g).arg(B);
qDebug() << SS;
ui->tableWidget->setStyleSheet(SS);

красит все заголовки в цвет GRB(r,g,B) на всех моих машинах, но на первой, я могу потом сменить цвет любого заголовка как захочу,
а на других машинах - нет, только все разом.

Почему? Исходный код один, OS одна, один дистрибут, Qt 5.3.1 с одного дистрибута.

Где зарыты камни?

С уважением,
Радмир

Автор: Алексей1153 13.2.2018, 8:15

tradmir@mail.ru, думаю, там магия. Самая обычная магия)


Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)