crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как задать размер для редактора в делегате?
AntonH851
  опции профиля:
сообщение 27.7.2010, 10:51
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 20.2.2010
Из: Шебекино
Пользователь №: 1475

Спасибо сказали: 1 раз(а)




Репутация:   0  


Добрый день!
Есть делегат в котором в качестве редактора использую виджет с QLineEdit:
TypeEditor::TypeEditor(QWidget *parent)
    : QWidget(parent)
{
    edit = new QLineEdit(this);
    QIntValidator *iv = new QIntValidator(edit);
    edit->setValidator(iv);

    QHBoxLayout *layout = new QHBoxLayout;
    layout->setMargin(0);
    layout->setSpacing(0);
    layout->addWidget(edit);
    setLayout(layout);

    this->edit->installEventFilter(this);
}

Суть проблемы в том, что строки в таблице по высоте больше чем стандартный размер QLineEdit, и когда редактируешь ячейку, то получается что едит висит посередине ее(ячейки), что не очень красиво...
Пробовал делать так:
void PTypeDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option,
                                         const QModelIndex &index) const
{
    editor->setGeometry(option.rect);
    TypeEditor *ed = qobject_cast<TypeEditor *>(editor);
    ed->edit->resize(option.rect.width(), option.rect.height());
}

Но это не помогает.....

помогло ed->edit->setFixedHeight(option.rect.height());

Сообщение отредактировал AntonH851 - 27.7.2010, 11:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.7.2010, 11:01
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(AntonH851 @ 27.7.2010, 14:51) *
editor->setGeometry(option.rect);
TypeEditor *ed = qobject_cast<TypeEditor *>(editor);
ed->edit->resize(option.rect.width(), option.rect.height());
надо что-нибудь одно, либо
editor->setGeometry(option.rect);
либо
ed->edit->resize(option.rect.width(), option.rect.height());

я использую только первый вариант
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.7.2010, 14:35
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Тему разделил: В очередной раз о компоновщиках
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 4.12.2024, 17:25