QT: Я унаследовал от QTreeView. Я унаследовал от QStandardItem. Как мне стилизовать предметы?

Наверное, мои навыки работы с Google подводят меня сегодня.

Я унаследовал от QTreeView, чтобы создать TreeView, который хранит QStandardItemModel вместо QAbstractItemModel. Я также унаследовал от QStandardItem, чтобы создать класс для хранения моих данных в элементе по мере необходимости.

Я успешно вставил свой производный QStandardItem в свой производный QTreeView QStandardItemModel. Проблема в том, что я не могу понять, как это оформить. Я знаю, что QTreeView имеет член setStyleSheet (QString), но я не могу заставить его работать. Это может быть так просто, потому что я не задаю правильный атрибут. Любые указатели будут оценены. Спасибо.

Для ясности вот мои определения классов.

class SurveyTreeItem : public QStandardItem
{
public:
    SurveyTreeItem();
    SurveyTreeItem( const QString & text );
    ~SurveyTreeItem();
};

class StandardItemModelTreeView : public QTreeView
{
    public:

    StandardItemModelTreeView(QWidget* parent = 0);
    ~StandardItemModelTreeView();

    QStandardItemModel* getStandardItemModel();
};

Я пробовал следующие таблицы стилей:

StandardTreeView::Item
{
font: 87 12pt 'Arial Black';
}

StandardTreeView::QStandardItem
{
font: 87 12pt 'Arial Black';
}

QTreeView::QStandardItem
{
font: 87 12pt 'Arial Black';
}

QTreeView::Item
{
font: 87 12pt 'Arial Black';
}

QTreeView::SurveyTreeItem
{
font: 87 12pt 'Arial Black';
}

StandardTreeView::SurveyTreeItem
{
font: 87 12pt 'Arial Black';
}

person San Jacinto    schedule 09.04.2010    source источник
comment
Вставьте передаваемую строку в setStyleSheet.   -  person Kaleb Pederson    schedule 09.04.2010
comment
@Kaleb, я сейчас вставлю. Сначала я оставил это, потому что знал, что то, что я ввожу, не работает. Я покажу все, что пробовал.   -  person San Jacinto    schedule 09.04.2010
comment
Я действительно пробовал стилизовать его в дизайнере, используя родительский элемент, и преобразовал все это в однострочники в QString (). Я не уверен, что делаю неправильно, так как кажется, что это работает для других моих компонентов (например, QPushButton и QTreeWidget).   -  person San Jacinto    schedule 09.04.2010


Ответы (1)


У вас почти получилось, что QTreeView :: item должен быть единственным. Сделайте закладку Справочник по таблицам стилей Qt. Весь этот раздел стоит прочитать, если вы занимаетесь подобными вещами.

Шрифт содержимого QTreeView должен быть оформлен с помощью самого QTreeview, например. QTreeview {font-size: 20pt;}, а не через стиль элемента

person Harald Scheirich    schedule 10.04.2010
comment
Спасибо. Я попробую позже и вернусь к вам. - person San Jacinto; 10.04.2010
comment
Я пробовал это ›setStyleSheet (QString (QTreeView :: Item {font: 87 12pt 'Arial Black';})); в StandardTreeView безуспешно. Я также попытался сделать букву i в нижнем регистре, как то, что вы указали. Я воспользуюсь ссылкой на таблицу стилей, чтобы найти некоторые подсказки. - person San Jacinto; 11.04.2010
comment
Посмотрев ссылку на таблицу стилей, я безуспешно пробовал QTreeView :: item :: text и QTreeView :: item: text и QTreeView :: item.text и QTreeView :: text. - person San Jacinto; 11.04.2010
comment
Собственно игра после игры в конструкторе QTreeView {font: 20pt, 'Arial Black'} работает, меняя шрифт элемента. Похоже, что представление действительно отображает элемент, хотя QTreeView :: item {color: red} меняет цвет элемента - person Harald Scheirich; 11.04.2010
comment
Потрясающий! Ваш последний комментарий был ключевым. Спасибо. - person San Jacinto; 12.04.2010