C++ Qt'da Karşılaşıp Anlam Veremediğim Durum ???
-
Layout Manager sınıfı yazıyorum.
Eklenmiş tüm widget'ların listesini
O an gösterilen widgetların listesini
ve ekranda göstermek için QGridLayout tutuyorum.Amacım istendiğinde tüm widget'ları göstermek istendiğinde filtreleyip birkaçını göstermek.
Her değişiklikte layout'un içini boşaltıp o an gösterilecekler listesi ile tekrar dolduruyorum.Widget ekleme konusunda hiçbir gözle görünür sıkıntı yok. Ama filtrelemeye gelince anlam veremediğim bir problem yaşıyorum.
Filtrelemek istendiğinde tüm widget'ların altında bir checkbox beliriyor ve hangileri seçilmişse ok tuşuna basınca sadece onlar görünüyor.
Buraya kadar sıkıntı yok. Buradan sonra tekrar geriye dönüp tümünü göstermek istediğimde bütün widget'lar çok güzel sıralanırken sonuncusu en son hali neyse onda kalıyor değişmiyor. Bir diğer ilginç nokta ise tekrar filtrele butonuna basınca (çağırılan fonksiyon tümünü göster butonuna basınca çağırılan fonksiyonu çağırıyor önce) tamamı planlandığı gibi görünüyor son widget dahil.
İlk durum : http://s23.postimg.org/3tpgjv26j/nce.pngFiltreleme ekranı : http://s7.postimg.org/6yfkgmdaj/filtreleme_ekran.png
Filtrelenmiş hal : http://s14.postimg.org/cb4i61nq9/filtrelenmi.png
Tümünü göster : http://s8.postimg.org/dtlz1ezrp/show_All.png
Tekrar filtre butonuna tıklayınca : http://s11.postimg.org/ffzijwlrn/tekrar_Filtre.png
-
bu sekilde kimse sana yardimci olamaz. sorun olan yere ait kodunu paylasirsan birileri dusunup biseyler yazabilir..
-
Biliyorum ama kodda da bişey yok zaten
voidLayoutManager::displayAll() //show all buttonu
{currentList.clear();
currentList.append(list);
arrangeLayout();}
voidLayoutManager::chooseToDisplay() //buradan aşağısı da filtre butonu { displayAll(); for(inti=0;i<currentGrid.count();i++) { Cell*cell=static_cast<Cell*>(currentGrid.itemAt(i)); if(cell) cell->checkBox()->setVisible(true); }
voidLayoutManager::filteringFinished() { for(inti=0;i<currentGrid.count();i++) { Cell*cell=static_cast<Cell*>(currentGrid.itemAt(i)); if(cell) cell->checkBox()->setVisible(false); }
buttonBox->removeButton(okButton); disconnect(okButton,SIGNAL(clicked()),this,SLOT(collectFilteredWidgets())); deleteokButton; okButton=0; arrangeLayout(); } -
o nasıl iş öyle :D net birşey diyemiyorum ama şöyle birşey sallayabilirim:
Sen bu arayüzü oluşturduğunda bazı bellek bölgelerine bu arayüzlerle ilgili bazı veriler kaydediliyor bunu biliyosun zaten. Hani acaba sen giving back system resources yapsan bir sıfırlansa tüm kayıtlı veriler, daha sonra tekrar oluştursan butonu mutonu sorunun düzelir mi.
Vardı sanki bi fonksiyon böyle bişey için ama hatırlayamıyorum :/ ayrıca kodlarında boyut falan da belirtmemişsin, bu nasıl sorun anlayamadım. Takipteyim konuyu
