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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Нужен пример по загрузке в QLivstVie QPixmap  (Прочитано 12495 раз)
Jkc
Гость
« : Май 12, 2005, 11:18 »

Нужен пример по загрузке в QLivstVie  QPixmap
Нужно загружать в QListView иконку возле записи, у кого есть пример
можете помочь Улыбающийся
Записан
Kostya.
Гость
« Ответ #1 : Май 12, 2005, 12:10 »

У QListViewItem есть функция setPixmap;
пример в dirview/dirview.cpp.
Записан
Jkc
Гость
« Ответ #2 : Май 12, 2005, 15:38 »

Этот пример не подходит есть ещё какието?
Записан
Ruslan Popov
Гость
« Ответ #3 : Май 12, 2005, 16:43 »

А нам подходит, всё отображается! Зачем ещё?
Записан
Hellenna
Гость
« Ответ #4 : Май 12, 2005, 17:20 »

Цитата: "Jkc"
Этот пример не подходит есть ещё какието?

Что именно не подходит?
Есть еще $QTDIR/examples/demo
Записан
Jkc
Гость
« Ответ #5 : Май 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]
    }

не работает,  подскажите что не так?
Записан
Ruslan Popov
Гость
« Ответ #6 : Май 13, 2005, 11:52 »

Вот здесь лежит мой старый проект, первый проект под Qt. Там есть и скриншоты, что я хотел получить, и исходный код.

АДМИНИСТРАТОР! ПОПРАВЬ КОД ФОРУМА! ГДЕ МОЯ КАРТИНКА?
Записан
Jkc
Гость
« Ответ #7 : Май 14, 2005, 16:09 »

А попроще нет примера?
Записан
Ruslan Popov
Гость
« Ответ #8 : Май 15, 2005, 22:30 »

:twisted:
А за тебя код не написать?
Записан
Jkc
Гость
« Ответ #9 : Май 16, 2005, 08:03 »

Писать не нужно, можно былобы подправить.
у тебя есть перегрузка SetPixmap но я не видел неодного вызова.
Записан
Ruslan Popov
Гость
« Ответ #10 : Май 16, 2005, 16:25 »

Потратил 10 минут своего времени на просмотр исходников. Код есть!
Если вы не умеете пользоваться поиском, готов читать документацию за $50/час, т.е. по стандартным расценкам.
Записан
Jkc
Гость
« Ответ #11 : Май 17, 2005, 11:23 »

У ВАС есть своя функция SetPixmap в QFileDirectory но она не разу не используется, в остальных случаях пользуетесь обычным вызовом setPixmap не в перегруженых QlistViewItem.
Записан
Sergeich
Гость
« Ответ #12 : Май 17, 2005, 14:07 »

Похоже все проблемы от того, что переопределил paintCell(), в нем ты рисуешь текст, но не рисуешь картинку. Добавь рисовку пиксмапа в paintCell() !
Записан
Jkc
Гость
« Ответ #13 : Май 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
Записан
Ruslan Popov
Гость
« Ответ #14 : Май 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 строчки.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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