2012-02-13 24 views
6

Uygulamamın kullanıcının çeşitli ekranlar arasında geçiş yapması gerekiyor. Bunu yapmamın yolu, her ekran için farklı QFrames'ler oluşturmak ve sonra Q Çerçevelerini MainWindow üzerinde merkezi widget'lar olarak ayarlamaktır. Sorun şu ki, setCentralWidget (çerçeve) dediğimde, eski kare silinir ve daha sonra erişemiyorum. Daha sonra erişebilmem için bu eski kareyi nasıl kaydedebilirim?Qt QMainWindow merkezi pencere öğesi silme işlemi

Sorunuzda belirsiz olup olmadığımı lütfen bana bildirin.

cevap

9

Merkezi pencere parçasını kaldırarak QMainWidow ürününü kaldırabilirsiniz. Daha sonra yeni merkezi WIDget ayarlayabilirdiniz; Ayrıca QStackedWidget QStackedWidget da muhtemelen daha iyi bir çözüm olacaktır.

+0

Bu çözüm çalışmıyor, QMainWindow'a bakılmalı, çalışmamalı. Hangi Qt sürümünü kullanıyorsunuz? – Kamath

+0

@Kamath, '13'e dönersek muhtemelen Qt 4.8 kullanıyordum. Bir süredir Qt kullanarak geliştiremedim ve şu anki sürümlerle çalışmalı veya çalışmamalı, ancak bu davranışı kırmak için nesne modelinin herhangi bir neden göremediğini söyleyemiyorum – Lol4t0

+0

tam brach qmainwindow için kaynak benim https://github.com/openwebos/qt/blob/master/src/gui/widgets/qmainwindow.cpp var aynı, eğer güncellenen setCurrentWidget çağrıları deleteLater var. – Kamath

0

Bunu yapmak için ilgili altwidgets üzerinde .hide() /. Show() ile oynayabilirsiniz. Ama sizin durumunuz için daha iyi bir çözüm, kesinlikle bir QTabWidget veya QStackedWidget'u kullanmaktır.

4

QStackedWidget bu sorun için zarif bir çözümdür, nasıl düzgün kullanılacağını öğrenebilirsiniz here.