Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] CSS кастомизация QTableWidget


Автор: wowka19 11.8.2013, 06:12
Необходимо применить ко всему QTableWidget setStyleSheet("background-color:red").

Делаю вот так: QTableWidget::setStyleSheet("background-color:red");
- содержимое таблицы закрашивается, НО хедеры нет

Тогда я добавляю так: QTableWidget::setStyleSheet(QHeaderView::section {background-color:red}");
- теперь хедеры закрашиваются, НО содержимое таблицы опять нетронутые несмотря на предыдущий метод

Что делать? Почему второе действие отменяет первое?

Автор: borisbn 11.8.2013, 07:32
Параметры в setStyleSheet можно задавать через точку с запятой

Автор: wowka19 12.8.2013, 01:17
borisbn, только для одного элемента. У меня два разных: QTableWidget и QHeaderView.

Автор: math64 12.8.2013, 07:35
Стили задаются так:
Код

QListView::item:selected:!active,QTableView::item:selected:!active {
    background: red;
};

(так задаётся цвет для выбранной неактивной ячейки таблицы или списка)
что можно ставить вместо item,selected,active - смотри документацию по StyleSheet
Cтиль можно задать в MainWindow и он будет дейстовать на все таблицы и списки в главном окне.
Чтобы действовало на все окна, можно задать стиль для QApplication.
Стиль можно хранить в отдельном файле:
Код

    QFile file("stylesheet.qss");
    file.open(QFile::ReadOnly);
    QString styleSheet = QLatin1String(file.readAll());
    setStyleSheet(styleSheet);
    file.close();


Автор: serger 12.8.2013, 15:15
Код

QTableView#table1 QHeaderView
{
    background-color:       #11389f;
    margin-bottom:          8px;
}
QTableView#table1 QHeaderView::section
{
...
}


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id520701b66ccc197566000002#findElement_E7045_5208d1e76ccc194f1200061f_0

Автор: wowka19 13.8.2013, 03:36
а как добраться ТОЛЬКО до горизонтальных QHeaderView?

И еще (чтобы не создавать новую тему): почему не работает хоткей?:
Код

QAction *mergeRows_action = new QAction(this);
mergeRows_action->setShortcut(QString("Ctrl+M"));
connect(mergeRows_action, SIGNAL(triggered()), this, SLOT(mergeRows()));

ЧЯДНТ?

Автор: serger 13.8.2013, 09:07
Или смотри исходы. Хотя скорее придётся декоратор переопределять.

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id520701b66ccc197566000002#findElement_E7045_5209cd1e6ccc19be670022f4_0

Автор: serger 13.8.2013, 09:08
И новые темы НАДО создавать.
Как потом люди будут находить ответы на вопросы?

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id520701b66ccc197566000002#findElement_E7045_5209cd4e6ccc19aa46000897_0

Автор: wowka19 13.8.2013, 15:06
не понял тебя serger. В примерах видел такой же код хоткеев, но у меня не работает

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)