Russian Qt Forum

Qt => Базы данных => Тема начата: phpCoder от Декабрь 11, 2014, 20:03



Название: Внешний вид таблицы результатов
Отправлено: phpCoder от Декабрь 11, 2014, 20:03
Добрый вечер.
Использую связку QTableView + QSqlTableModel + MySQL.
Подскажите, плз:
1. Как сделать, чтобы столбец таблицы содержал текст, например, синего цвета + жирный + выровнен по правую сторону?
2. Как изменить высоту всех строк? Ну как в CSS: height: 20px;
3. Как сделать, чтобы в поле таблицы ввел какое-то значение и оно в нем осталось? Просто у меня так: начинаю редактировать поле, снимаю фокус с этого поля и... вместо введенного значения появляется старое значение. При этом в примерах Qt новые значения поля сохраняются в ячейке...
4. Как установить в таблице новый шрифт полей?


Название: Re: Внешний вид таблицы результатов
Отправлено: PimenS от Декабрь 19, 2014, 16:46
Добрый день!

Если не секрет, почему связка QTableView + QSqlTableModel?
Я обычно для редактируемых моделей использую связку QTableView + QSortFilterProxyModel + QAbstractTableModel, что дает возможность настраивать внешний вид данных в таблице
по своему усмотрению, без особых затрат.

1. Для изменения внешнего вида данных в ячейках переопределяется QVariant data(const QModelIndex &index, int role) const Например:
Код:
case Qt::FontRole: {
            QFont font = QFont("Arial", 10, QFont::Normal);
            return qVariantFromValue(font);
            break;
    }

    case Qt::TextAlignmentRole: {
            return int(0x0001 | 0x0080);
            break;
    }

2. Я обычно делаю вот так: verticalHeader()->setDefaultSectionSize(int);
3. Для этого в модели переопределяется bool QAbstractItemModel::​setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole)
4. Не понял что имеется ввиду "шрифт полей"

Наверное все это легко сделать и с QSqlTableModel, но почему-то мне больше понравилось работать с QAbstractTableModel.


Название: Re: Внешний вид таблицы результатов
Отправлено: demal от Январь 11, 2015, 23:05
на 3 вопрос: Скорее всего у тебя в qTableView стоит только для чтения. Посмотри тригеры вьюхи.