2011-01-02 28 views
5

Bir QGraphicsView içinde kullanmayı amaçladığım QLabel alt sınıfını oluşturdum. Grafik görünümünün üzerine tıklayıp sürükleyebileceği hareketli bir "nokta" işlevi görür.QLabel'in piksumu neden çalışmıyor?

Özel sınıf oluşturmak ve grafik görünümünde görüntülenmek bir sorun olmamıştır; Ancak, istediğim imgenin kendisiyle boyamak için özel QLabel'u almaya çalışıyorum. Benim özel QLabel sınıfının yapıcı şöyle: Ben görüntüleri dizin uygulama çalıştırıldığında çalışma dizininde var sağladıktan

TrackerPoint::TrackerPoint(QWidget *parent) : 
    QLabel(parent) 
{ 
    this->setFixedSize(40, 40); 
    QPixmap pixmap(":/images/target.png"); 
    this->setPixmap(pixmap); 
    this->setMask(pixmap.mask()); 
} 

. hepsi de alakalı ise, benim QRC dosyası şöyle: Ben gün boyunca bu sorunla başa çıkmak için çalışıyorum

<RCC> 
<qresource prefix="/images"> 
<file>images/target.png</file> 
</qresource> 
</RCC> 

- herhangi bir fikir görüntü güzel olurdu neden görünmediğini olarak.

+0

Belki de "TrackerPoint :: paintEvent" ile 'QLabel' adlı paintEvent 'özelliğini geçersiz kıldınız? – ismail

+0

Ctor kullanımı iyi olmalıdır. Çoğu durumda Alt Sınıflandırma gerekli olmamasına rağmen. Grafik düzeninin dışında bir etiket oluşturmaya çalıştınız mı? QGraphicsPixmapItem'i denediniz mi? –

cevap

6

(? Ben QLabel kurucuları içindedir pixmap ayarlıyorum gerçeği ile ilgisi var mı) Şu ana kadar:

<qresource prefix="/images"> 
<file>images/target.png</file> 
</qresource> 

Bu çifte images neden olacağını düşünüyorum kaynak yolu, yani :/images/images/target.png. Bunu düzeltmek için, prefix="/images"'u kaldırın veya file etiketine alias="target.png" yazın.

o QPixmap::load kullandığı böylece hatalar için kontrol edilebilir beri, kodunuzu yazabilirsiniz, hata nerede daha anlaşılabilir olması için:

QPixmap pixmap; 
if (!pixmap.load(":/images/target.png")) { 
    qWarning("Failed to load images/target.png"); 
} 
this->setPixmap(pixmap); 

Yoksa da ileri gidip QImageReader kullanabilirsiniz hangi can ayrıntılı hata mesajları verir.

+0

Teşekkürler! Bu benim problemimi çözdü. Ayrıca, teğetsel olarak, eğer QGabel'e PNG şeffaflığı kullanmak istersem, yapmam gereken özel bir şey var mı? –

+0

Hayır, Qt PNG eklentisine sahip olmanın dışında özel bir şey yapmanız gerekmez. –