Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перенос из QVariant в QImage, Перенос из QVariant в QImage 
:(
    Опции темы
olegkuzn
Дата 30.6.2014, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



здраствуйте.
Подскажите как извлечь картину QImage из переменной QVariant.
Необходимо пенести данные из модели в отображение

BarleyModel унаследована от QAbstractItemModel
BarleyView   унасленована  от QAbstractItemView


Код

/*virtual*/
QVariant BarleyModel::data(const QModelIndex &index, int role) const
{
    if( role == Qt::DisplayRole)
    {
        qint8 pos = index.row() * m_nNumRows + index.column();
        return QVariant(m_pnData[pos]);
    }

    if( role == Qt::DecorationRole)
    {
        QImage imgTemp = m_Image.copy(index.row() * m_szBarley.height(),
                                      index.column() * m_szBarley.width(),
                                      m_szBarley.width(),
                                      m_szBarley.height()
                                      );    // выдедляем из основной картинки "подкартинку"

        return QVariant(imgTemp); // QVariant(QImage& img) - такого конструктора нет но это проходит
    }

    return QVariant();
}



Код

/*virtual*/
void BarleyView::paintEvent(QPaintEvent */*event*/)
{
    QPainter painter(viewport());

    int nPosX = 0;
    int nPosY = 0;

    for(int x = 0; x < model()->rowCount(); x++)
    {
        for(int y = 0; y < model()->columnCount(); y++)
        {
            QModelIndex idxModel = model()->index(x, y);
            QVariant varTemp = model()->data(idxModel, Qt::DecorationRole);
            QImage imgTemp;
            // Здесь должен быть код переноса картинки из QVariant в QImage
            
            painter.drawImage(nPosX, nPosY, imgTemp);

            nPosX+=m_szBarley.width();
        }
        nPosY+=m_szBarley.height();
    }
}

PM MAIL   Вверх
borisbn
Дата 30.6.2014, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Цитата
Because QVariant is part of the QtCore library, it cannot provide conversion functions to data types defined in QtGui, such as QColor, QImage, and QPixmap. In other words, there is no toColor() function. Instead, you can use the QVariant::value() or the qVariantValue() template function. For example:
 QVariant variant;
 ...
 QColor color = variant.value<QColor>();
The inverse conversion (e.g., from QColor to QVariant) is automatic for all data types supported by QVariant, including GUI-related types:
 QColor color = palette().background().color();
 QVariant variant = color;



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
olegkuzn
Дата 30.6.2014, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



Спасибо borisbn.
Следующий раз постараюсь прочитать весь "Help" по теме, а не только просматривать функции члены класса.

Добавлено через 1 минуту и 7 секунд
Спасибо borisbn.
Следующий раз постараюсь прочитать весь "Help" по теме, а не только просматривать функции члены класса.

Добавлено через 1 минуту и 13 секунд
Спасибо borisbn.
Следующий раз постараюсь прочитать весь "Help" по теме, а не только просматривать функции члены класса.

Добавлено через 1 минуту и 16 секунд
Спасибо borisbn.
Следующий раз постараюсь прочитать весь "Help" по теме, а не только просматривать функции члены класса.

PM MAIL   Вверх
olegkuzn
Дата 30.6.2014, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



Спасибо borisbn.
Следующий раз постараюсь прочитать весь "Help" по теме, а не только просматривать функции члены класса.

PM MAIL   Вверх
borisbn
Дата 30.6.2014, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Бог не дурак, полюбит и пятак ?  smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.