2016-03-21 14 views
0

Qt içinde QWindow nesnesi ile çalışıyorum. Çerçevesiz bayrak ayarlandığında, pencere varsayılan konumuna sabitlenir. Bu bayrak ayarlandığında kaybolan hareketliliği geri almak için bir yol var mı? Bir kaç farklı şekilde denedim ama hepsi QWidgetÇerçevesiz bir QWindow hareket ettirin

+0

Bunun yerine ['QWindow :: setPosition'] (http://doc.qt.io/qt-5/qwindow.html#setPosition) kullanın? – thuga

+0

Hareket ederek, 'Qt :: FramelessWindowHint' olduğunda fareyle hareket etmek demek? İşletim sistemine bağlı olabileceğini biliyor musunuz? Linux'ta LAlt + LMB'ye basılarak bu hareketliliğe sahibiz. Windows'da farklı bir hikaye olacak. Ya da belki bazı fare olaylarını yakalayabilir ve bir şekilde kendi kendine idare edebilirsin, ama ilk bakışta bana aşırı derecede benziyor. – Radek

+0

Teşekkürler thuga. MousePress ve mouseMove olayları ile birlikte setPosition kullanarak pencereyi nasıl hareket ettireceğimi ancak mouseRelease kullanmayı denediğimde hiçbir olayın yakalanmadığını öğrendim. Yine de birkaç başka şey denemelisiniz ama – user3447816

cevap

0

Sen QWidget devralan ve mouseMoveEvent, mousePressEvent ve mouseReleaseEvent geçersiz kılabilir nesneleri yalnızca gibi görünüyor hareket() fonksiyonunu gerektirir. Bir fare düğmesine basıldığında imlecin üst sınırı (orta veya her ne olursa) arasındaki mesafeyi takip edin; Düğmeye hala basıldığında, hareket ettirildiğinde fareyi hareket ettirin.

Pencereyi ne zaman ve ne kadar uzağa taşıyacağınızı izlemek için bool tracking üye değişkeni ve QPoint delta değişken ekleyerek bunu yapardım.

Özel stilalı başlık çubukları eklemek için bunu kullanabilirsiniz; QWidget'den devralın ve yukarıdaki gibi tüm düzeltmeyi ekleyin ve en uzak atası (ebeveyni veya ebeveynleri ebeveyn, uzun süre boş değil) taşıyın.

İlgili konular