LINUX.ORG.RU

В чём прикол?


0

0

Собсно вот что не так. Есть класс kmmsPlaylist, в него передаётся 
QPixmap в функцию (сразу попрошу не говорить про указатель, я его 
заюзаю как только решу проблемму) setSelectItemPix(QPixmap selectItemPix) и она задаёт QPixmap select.

Так вот, как видно из кода, для проверки, того что QPixmap передалась,
я создаю виджет w и задаю его фон как select, в setSelectItemPix проблемм нет,
фон такой какой и должен быть, в моём случае синий, но, когда для той же
проверки я создаю виджет в loadPlaylist(QString *path) то его фон не меняется
и остаётся дефолтным, опять же в моём случае это серый.

Вот и вопрос, почему значение QPixmap select видно только из 
setSelectItemPix, а в других функциях нет.

Пробовал кинуть select в паблик, но результат тот же, от безисходности
думал поможет.

kmmsPlaylist.h
/********************************************************************/
class kmmsPlaylist : public QWidget
{
	Q_OBJECT

public:

	kmmsPlaylist(QString name);				//constructor
	~kmmsPlaylist();						//destructor

	void savePlaylist();						//write playlist to hdd
	void loadPlaylist(QString *path);				//read playlist from hdd
	QString* name(){return name_playlist;}		//name of playlist
	void setName(QString name);				//set name of playlist

	void setItemsBackground(QPixmap pix);
	void setItemsBackground(QWidget widget);
	
	void setSelectItemPix(QPixmap selectItemPix);

 	void addItem(QString path_to_file, QString name);			//add item to playlist
	void removeItem(QString);							//remove item from playlist
	int numItem(){return num_items;}						//num of items in playlist

	void resizeEvent (QResizeEvent *);

private:

	bool first_click;
	int current_set_item, prev_set_item;
	QPixmap select;
	QString *name_playlist;					//name of playlist
	int num_items;							//num of items
	QStringList *str_items;					//content of playlist
	QPtrList<kmmsPlaylistItem> items;			//vector of items of list

public slots:
	
	void itemsChangeState(int id);
};
/********************************************************************/


kmmsPlaylist.cpp
/********************************************************************/
kmmsPlaylist::kmmsPlaylist(QString name)
{
...
}

kmmsPlaylist::~kmmsPlaylist()
{
}

void kmmsPlaylist::setName(QString name)
{
...
}

void kmmsPlaylist::removeItem(QString name)
{
}

void kmmsPlaylist::addItem(QString path, QString name)
{
...
}

void kmmsPlaylist::resizeEvent (QResizeEvent *)
{
...
}

void kmmsPlaylist::savePlaylist()
{
}

void kmmsPlaylist::loadPlaylist(QString *path)
{
	QFile *file = new QFile(*path);
	...
	delete file;

	QWidget *w = new QWidget();               <---
	w->setBackgroundPixmap(select);           <--- Проверка
	w->resize(100,100);                       <---
	w->show();                                <---
}

void kmmsPlaylist::setSelectItemPix(QPixmap selectItemPix)
{
  	select = QPixmap(selectItemPix);

	QWidget *w = new QWidget();                <---
	w->setBackgroundPixmap(select);            <--- Проверка
	w->resize(100,100);                        <---
	w->show();                                 <---
}

void kmmsPlaylist::itemsChangeState(int id)
{
...
}
/********************************************************************/

Содержимое остальных функций никак не влияет на QPixmap select.

Что не так?!

Заранее спасибо!!!
★★★★★

> сразу попрошу не говорить про указатель, я его заюзаю как только решу проблемму

ИМХО, пока не заюзаеш, проблемы не решыш...

bugmaker ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.