Russian Qt Forum
Сентябрь 30, 2024, 20:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QListWidget padding  (Прочитано 5450 раз)
romanick
Гость
« : Март 30, 2013, 08:33 »

Добрый день!
Как сделать padding у QListWidget?
Код:
QListWidget* cw;
...
cw->setStyleSheet("padding-left: 20px");
Не работает, хотя в документации указано что поддерживается "модель коробки".
Мне просто нужно сделать чтобы слева от списка элементов было побольше места.
В гугле, в том числе англоязычном, куча подобных вопросов без ответа...
Записан
Bepec
Гость
« Ответ #1 : Март 30, 2013, 10:13 »

Тебе нужно добавить ::Item. Как то так.
Ведь на деле наверно тебе нужен padding элементов.

PS хотя как знать.
Записан
twp
Гость
« Ответ #2 : Март 30, 2013, 19:19 »

скорее всего не получится сделать такое через qss поскольку "модель коробки" работает для самого QListWidget, а отступ нужно сделать в его вьюпорте. По идее тебе нужно это
Код
C++ (Qt)
void QAbstractScrollArea::setViewportMargins ( int left, int top, int right, int bottom ) [protected]
 
Пример использования с отрисовкой в этом отступе можно найти в QTDIR\examples\widgets\codeeditor\
Записан
Kolobok
Гость
« Ответ #3 : Март 30, 2013, 19:29 »

Возьми QTreeWidget. Там есть отступ.
Записан
romanick
Гость
« Ответ #4 : Март 30, 2013, 22:05 »

Придумал вот такое решение:
ObjectItemDelegate - наследник от QStyledItemDelegate.

void ObjectItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyleOptionViewItem o = option;
o.rect.setLeft(o.rect.left()+20);
QStyledItemDelegate::paint(painter, o, index);
}

Несколько криво, но мне подходит.
Записан
romanick
Гость
« Ответ #5 : Март 30, 2013, 22:20 »

скорее всего не получится сделать такое через qss поскольку "модель коробки" работает для самого QListWidget, а отступ нужно сделать в его вьюпорте. По идее тебе нужно это
Код
C++ (Qt)
void QAbstractScrollArea::setViewportMargins ( int left, int top, int right, int bottom ) [protected]
 
Пример использования с отрисовкой в этом отступе можно найти в QTDIR\examples\widgets\codeeditor\

Код:
void ContentWidget::setViewportMargins(int left, int top, int right, int bottom)
{
    QListWidget::setViewportMargins(left+20, top, right, bottom);
}
Так не работает. Отступа нет.
Записан
Bepec
Гость
« Ответ #6 : Март 31, 2013, 10:20 »

Нарисуй-ка ты то, чего хочешь. А я, когда пойму, постараюсь тебе помочь.
Записан
romanick
Гость
« Ответ #7 : Март 31, 2013, 12:50 »

Нарисуй-ка ты то, чего хочешь. А я, когда пойму, постараюсь тебе помочь.

Нарисовал. Я хочу расширить с помощью css или как-то ещё область отмеченную красными стрелками. Чтобы, например, было удобнее выделять элементы прямоугольником, начиная от области слева от них.
Решение в три строчки вообще-то я придумал (см. выше), но оно кривовато по субъективным ощущениям.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.136 секунд. Запросов: 20.