Название: Куда ушли слоны или Итем с отображением графики
Отправлено: -=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 от Август 09, 2007, 14:58
Как связаны первый и второй кусок кода? Причем query.value(1).toByteArray() К первому классу? К получению картинки? Это ж сиквелевский запрос, так ведь? Откуда нам знать что и как ты сохранил в базе, да еще и в первом поле...
Название: Куда ушли слоны или Итем с отображением графики
Отправлено: -=QT=- от Август 09, 2007, 15:44
Как связаны первый и второй кусок кода? Причем 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 от Август 10, 2007, 01:32
тебе нужно было скинуть связь QMyJobNode с QMyJobTreeModel QVariant QMyJobTreeModel::data(const QModelIndex &index, int role) const { ... if (role == Qt::DecorationRole) return node->icon; ... }
Название: Куда ушли слоны или Итем с отображением графики
Отправлено: -=QT=- от Август 10, 2007, 08:55
тебе нужно было скинуть связь QMyJobNode с QMyJobTreeModel QVariant QMyJobTreeModel::data(const QModelIndex &index, int role) const { ... if (role == Qt::DecorationRole) return node->icon; ... }
УРЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ!!!!!!!!!!!!!!!!! СПАСИБО СПАСИБО СПАСИБО СПАСИБО СПАСИБО :D :P :x :shock: :wink: :roll: :arrow:
|