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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Куда ушли слоны или Итем с отображением графики  (Прочитано 4562 раз)
-=QT=-
Гость
« : Август 09, 2007, 14:40 »

Соорудил собственный MyNonStandartItem()

Код:
class QMyJobNode
{

public:
   
    enum TypeJob {jobPlanned, jobExecute, jobNoExecute, jobEndExecute };

    QMyJobNode( TypeJob type,
                const QString & = "",
                const QIcon & = QIcon(),
                const int & = 0,
                const QDate & = QDate::QDate(),
                const QDate & = QDate::QDate(),
                const QDate & = QDate::QDate(),
                const QDate & = QDate::QDate(),
                const int & = 0,
                const int & = 0,
                const bool & = false,
                const int & = 0 );

               
    virtual ~QMyJobNode();

    TypeJob type;
    QString jobName;
    QIcon icon;
    int planDayNumber;
    QDate planDateBegin;
    QDate planDateEnd;
    QDate faktDateBegin;
    QDate faktDateEnd;
    int procExecute;
    int dayInMonth;
    bool jobExecuteOthers;
    int id;
   
    QMyJobNode *parent;
    QList<QMyJobNode *> children;
};


При заполнении пихаю:
Код:
        pixmap.loadFromData( query.value(1).toByteArray() );
        const QIcon p2 = QIcon(pixmap);

На выходе пустота :roll:  Даже со сметаной не получается.
Кто знает где, как нужно.
Не хочется использовать QStandartItem(), но возможно придется если не поборю.
Записан
goer
Гость
« Ответ #1 : Август 09, 2007, 14:58 »

Как связаны первый и второй кусок кода?
Причем

Цитировать
query.value(1).toByteArray()


К первому классу? К получению картинки? Это ж сиквелевский запрос, так ведь? Откуда нам знать что и как ты сохранил в базе, да еще и в первом поле...
Записан
-=QT=-
Гость
« Ответ #2 : Август 09, 2007, 15:44 »

Цитата: "goer"
Как связаны первый и второй кусок кода?
Причем

Цитировать
query.value(1).toByteArray()


К первому классу? К получению картинки? Это ж сиквелевский запрос, так ведь? Откуда нам знать что и как ты сохранил в базе, да еще и в первом поле...


Весь код выложить - много места а в этом поле PNG картинка

Код:
CREATE OR REPLACE FUNCTION insert_img(bytea)
  RETURNS character varying AS
$BODY$DECLARE
  _img ALIAS FOR $1;
BEGIN
  INSERT INTO images( img ) VALUES( _img );
  RETURN '';
END$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION insert_img(bytea) OWNER TO postgres;
GRANT EXECUTE ON FUNCTION insert_img(bytea) TO postgres;
GRANT EXECUTE ON FUNCTION insert_img(bytea) TO public;

И при использовании QTreeWidgetItem она отображается правильно.
А при собственной реализации модели и использовании QTreeView нет.

добавлено спустя 12 минут:

 а код это вот ... типа урезанной версии (только стерео вместо 7.1)

Код:
#include <QString>
#include <QIcon>
#include <QDate>
//
class QMyJobNode
{

public:
   
    enum TypeJob {jobPlanned, jobExecute, jobNoExecute, jobEndExecute };

...
    bool jobExecuteOthers;
    int id;
   
    QMyJobNode *parent;
    QList<QMyJobNode *> children;
};

#include "qmyjobnode.h"
//
QMyJobNode::QMyJobNode( TypeJob p_type,
                        const QString &p_jobName, // Название работы
                        const QIcon &p_icon, // Иконка приоритета
....
                        const bool &p_jobExecuteOthers, // Признак выполнения работы на стороне
                        const int &p_id ) // Уникальный идентификатор )
{
    this->type = p_type;
    this->jobName = p_jobName;
    this->icon = p_icon;
    this->planDayNumber = p_planDayNumber;
    this->planDateBegin = p_planDateBegin;
    this->planDateEnd = p_planDateEnd;
    this->faktDateBegin = p_faktDateBegin;
    this->faktDateEnd = p_faktDateEnd;
    this->procExecute = p_procExecute;
    this->dayInMonth = p_dayInMonth;
    this->jobExecuteOthers = p_jobExecuteOthers;
    this->id = p_id;

    parent = 0;
}
//
QMyJobNode::~QMyJobNode()
{
    qDeleteAll(children);
}


далее модель:
Код:
class QMyJobTreeModel : public QAbstractItemModel
{
Q_OBJECT
public:
QMyJobTreeModel(QObject *parent = 0);
virtual ~QMyJobTreeModel();
   
    void setRootNode(QMyJobNode *node);
    void setup(QMyJobNode *node = 0, int id = 0);
   
    QModelIndex index(int row, int column, const QModelIndex &parent) const;
    QModelIndex parent(const QModelIndex &child) const;
    int rowCount(const QModelIndex &parent) const;
    int columnCount(const QModelIndex &parent) const;
    QVariant data(const QModelIndex &index, int role) const;
    QVariant headerData(int section, Qt::Orientation orientation, int role) const;
   
private:
    QMyJobNode *nodeFromIndex(const QModelIndex &index) const;
    QMyJobNode *rootNode;
};


и кусок заполнения:
Код:
...
    QPixmap pixmap;
    QSqlQuery query;
    query.exec( QString("SELECT * FROM rab_view_002 WHERE p_id=%1").arg(id) );
    while (query.next())
   {
        const QString p1 = query.value(0).toString();
        pixmap.loadFromData( query.value(1).toByteArray() );
        const QIcon p2 = QIcon(pixmap);
        const int p3 = query.value(2).toInt();
        const QDate p4 = query.value(3).toDate();
        const QDate p5 = query.value(4).toDate();
        const QDate p6 = query.value(5).toDate();
        const QDate p7 = query.value(6).toDate();
        const int p8 = query.value(7).toInt();
        const int p9 = query.value(8).toInt();
        const bool p10 = query.value(9).toBool();
        const int p11 = query.value(10).toInt();

        QMyJobNode *Node = new QMyJobNode( QMyJobNode::jobPlanned, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 );
        Node->parent = node;
        node->children.append( Node );
....


добавлено спустя 15 минут:

 а заливалось вот так ....
 
Код:
if (!win.label->pixmap()->isNull())
    {
        QByteArray bytes;
        const QPixmap  *pixmap = win.label->pixmap();
        QBuffer buffer(&bytes);
        buffer.open(QIODevice::WriteOnly);
        pixmap->save(&buffer, "PNG");

        query.prepare("SELECT * FROM insert_img(:photo)");
        query.bindValue(":photo", bytes);
        query.exec();
    }
Записан
vaprele07
Гость
« Ответ #3 : Август 10, 2007, 01:32 »

тебе нужно было скинуть связь QMyJobNode с QMyJobTreeModel
Код:

QVariant QMyJobTreeModel::data(const QModelIndex &index, int role) const
{  
  ...
  if (role == Qt::DecorationRole) return node->icon;
  ...
}
Записан
-=QT=-
Гость
« Ответ #4 : Август 10, 2007, 08:55 »

Цитата: "vaprele07"
тебе нужно было скинуть связь QMyJobNode с QMyJobTreeModel
Код:

QVariant QMyJobTreeModel::data(const QModelIndex &index, int role) const
{  
  ...
  if (role == Qt::DecorationRole) return node->icon;
  ...
}


УРЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ!!!!!!!!!!!!!!!!!

СПАСИБО СПАСИБО СПАСИБО  СПАСИБО СПАСИБО  Веселый  Показает язык  :x  :shock:  :wink:  :roll:  :arrow:
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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