Russian Qt Forum

Qt => Базы данных => Тема начата: aliks-os от Март 30, 2011, 00:29



Название: QSqlTableModel
Отправлено: aliks-os от Март 30, 2011, 00:29
Есть QTableView который подключается к QSqlTableModel. Требуется на определенных типах полей (BLOB, TEXT, MEDIUM TEXT...) использовать свой делегат. БД - MySQL. Как можно определить тип выбранного поля.


Название: Re: QSqlTableModel
Отправлено: Пантер от Март 30, 2011, 07:22
Ты получаешь данные через QVariant, у которого есть метод Type QVariant::type () const.


Название: Re: QSqlTableModel
Отправлено: aliks-os от Март 30, 2011, 09:32
Ты получаешь данные через QVariant, у которого есть метод Type QVariant::type () const.

не пойдет. Сам уже докопался. Сделал так:
Код:
    static inline QString getNameMYSQL(int t) {
        switch (t) {
        case 0: return "decimal";
        case 1: return "tiny";
        case 2: return "short";
        case 3: return "integer";
        case 4: return "float";
        case 5: return "double";
        case 6: return "null";
        case 7: return "timestamp";
        case 8: return "longlong";
        case 9: return "int24";
        case 10: return "date";
        case 11: return "time";
        case 12: return "datetime";
        case 13: return "year";
        case 14: return "newdate";
        case 247: return "enum";
        case 248: return "set";
        case 249: return "tinytext";
        case 250: return "mediumtext";
        case 251: return "longtext";
        case 252: return "text";
        case 253: return "varchar";
        case 254: return "char";

        default:
            return QString("Type %1").arg(t);
        }
    }

getNameMYSQL(model->record(0).field(col).typeID());