Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Jkc от Май 12, 2005, 11:18



Название: Нужен пример по загрузке в QLivstVie QPixmap
Отправлено: Jkc от Май 12, 2005, 11:18
Нужен пример по загрузке в QLivstVie  QPixmap
Нужно загружать в QListView иконку возле записи, у кого есть пример
можете помочь :)


Название: Нужен пример по загрузке в QLivstVie QPixmap
Отправлено: Kostya. от Май 12, 2005, 12:10
У QListViewItem есть функция setPixmap;
пример в dirview/dirview.cpp.


Название: Нужен пример по загрузке в QLivstVie QPixmap
Отправлено: Jkc от Май 12, 2005, 15:38
Этот пример не подходит есть ещё какието?


Название: Нужен пример по загрузке в QLivstVie QPixmap
Отправлено: Ruslan Popov от Май 12, 2005, 16:43
А нам подходит, всё отображается! Зачем ещё?


Название: Нужен пример по загрузке в QLivstVie QPixmap
Отправлено: Hellenna от Май 12, 2005, 17:20
Цитата: "Jkc"
Этот пример не подходит есть ещё какието?

Что именно не подходит?
Есть еще $QTDIR/examples/demo


Название: Нужен пример по загрузке в QLivstVie QPixmap
Отправлено: Jkc от Май 13, 2005, 09:37
я приведу пример может кто то подскажет.
vyzf.h   переопределённых QListViewItem
Код:



#include "form1.h"
#include <qlistview.h>
#include <qpixmap.h>
#ifndef VYZF_H
#define VYZF_H
class MyQListViewItem : public QListViewItem
{
   
public:
    MyQListViewItem( QListView *parent );
    MyQListViewItem(QListViewItem * parent);
    MyQListViewItem( QListView * parent, QListViewItem * after );
    MyQListViewItem( QListViewItem * parent, QListViewItem * after );      
    ~MyQListViewItem();
public:
    virtual void paintCell( QPainter* p, const QColorGroup& cg, int column, int width, int align );        
     QColor color() const      { return col; }
    QColor  getColor() const    {return col; };
    void setColor( QColor c ) {   col = c;     }


[b]
#if !defined(Q_NO_USING_KEYWORD)
    using QListViewItem::setPixmap;
#endif
    void setPixmap( int, QPixmap * p );
private:
  QPixmap *pix;
[/b]


public:
    QColor col;
};
#endif // FORM1_H

//.CPP

void MyQListViewItem::setPixmap( int colum, QPixmap *px )
{

     pix = px;
    setup();
    widthChanged( 0 );
    invalidateHeight();
    repaint();

}


вызов setPixmap
Код:


void Form1::addItem()
{
QPixmap * pix = new QPixmap (QPixmap::fromMimeSource( "Phone.png" )) ;
    MyQListViewItem * item;
    if ( on_menu_item )
  item = new MyQListViewItem ( on_menu_item);    
    else
   item = new MyQListViewItem ( listView2 );
                   
  int a = item->depth();
  if ( item->depth() <2  ) {
             if  (  item->depth() ==0 )
             item ->setColor( "blue" );
             item->setText( 0, "" );  
item->setRenameEnabled( 0, true );
item->setOpen( true );
listView2->setCurrentItem( item );
item->startRename(0);
      [b]       item->setPixmap( 0, pix);  [/b]
    }

не работает,  подскажите что не так?


Название: Нужен пример по загрузке в QLivstVie QPixmap
Отправлено: Ruslan Popov от Май 13, 2005, 11:52
Вот здесь (http://ts.kmc.ru/articles.php4?a=39) лежит мой старый проект, первый проект под Qt. Там есть и скриншоты, что я хотел получить, и исходный код.
(http://www.kmc.ru/images.php4?pics=66)
АДМИНИСТРАТОР! ПОПРАВЬ КОД ФОРУМА! ГДЕ МОЯ КАРТИНКА?


Название: Нужен пример по загрузке в QLivstVie QPixmap
Отправлено: Jkc от Май 14, 2005, 16:09
А попроще нет примера?


Название: Нужен пример по загрузке в QLivstVie QPixmap
Отправлено: Ruslan Popov от Май 15, 2005, 22:30
:twisted:
А за тебя код не написать?


Название: Нужен пример по загрузке в QLivstVie QPixmap
Отправлено: Jkc от Май 16, 2005, 08:03
Писать не нужно, можно былобы подправить.
у тебя есть перегрузка SetPixmap но я не видел неодного вызова.


Название: Нужен пример по загрузке в QLivstVie QPixmap
Отправлено: Ruslan Popov от Май 16, 2005, 16:25
Потратил 10 минут своего времени на просмотр исходников. Код есть!
Если вы не умеете пользоваться поиском, готов читать документацию за $50/час, т.е. по стандартным расценкам.


Название: Нужен пример по загрузке в QLivstVie QPixmap
Отправлено: Jkc от Май 17, 2005, 11:23
У ВАС есть своя функция SetPixmap в QFileDirectory но она не разу не используется, в остальных случаях пользуетесь обычным вызовом setPixmap не в перегруженых QlistViewItem.


Название: Нужен пример по загрузке в QLivstVie QPixmap
Отправлено: Sergeich от Май 17, 2005, 14:07
Похоже все проблемы от того, что переопределил paintCell(), в нем ты рисуешь текст, но не рисуешь картинку. Добавь рисовку пиксмапа в paintCell() !


Название: Нужен пример по загрузке в QLivstVie QPixmap
Отправлено: Jkc от Май 17, 2005, 17:21
Код:
void MyQListViewItem::paintCell( QPainter* p, const QColorGroup& cg, int column, int width, int alignment ){    
     QColorGroup _cg( cg );
     QColor c = _cg.text();  
                     QPen pen = p->pen();    
                   if(clr == "red" || clr == "blue" ){
                     QFont f( "Tahoma", 8, QFont::Bold );
        p->setFont( f );
   }    
    _cg.setColor( QColorGroup::Text,  clr );
    QListViewItem::paintCell( p, _cg, column, width, alignment );
}

вот так работает ,но опять же при перерисовке при вызовет setPixmap ... опять тормозит QListView


Название: Нужен пример по загрузке в QLivstVie QPixmap
Отправлено: Ruslan Popov от Май 18, 2005, 14:32
Цитата: "Jkc"
У ВАС есть своя функция SetPixmap в QFileDirectory но она не разу не используется, в остальных случаях пользуетесь обычным вызовом setPixmap не в перегруженых QlistViewItem.

Код:
QFEDirectory::QFEDirectory(
QListView *tree, // parent object
QTable *table, // friend object
const QString& title, // tree item title
const QString& path ) // start path
: QListViewItem( tree ), FileName( path ), FileTable( table )
{
// it is a first (root) item of tree
Parent = 0;
Path = path;
// check can we read from this directory
Readable = QDir( GetPath() ).isReadable();
setPixmap( FIRSTCOLUMN, XPM_Folder );
setText( FIRSTCOLUMN, title );
setExpandable( TRUE );
}

Внимательно смотрим на 1, 6 и 13 строчки.