İçindekiler
GTK #, tasarımı oluşturabilmemiz için bir penceredeki widget'ların konumunu konteynırlar aracılığıyla kontrol etmemizi sağlar. Farklı özelliklere sahip olan ve bileşenlerin veya widget'ın bir pencere içindeki tasarımına ve yerleştirilmesine rehberlik etmeye hizmet eden bu kaplar.NS ana kaplar NS:
- Yatay veya dikey kutulu konteynerler
- Tablolu Konteynerler
- Sabit konteyner
- Çerçeveler veya Çerçeve Konteyneri
Uygulamamızın ihtiyaç veya gereksinimlerine göre konteynerler nasıl kullanılır
Yatay veya dikey kutulu konteynerler
Windows altında programlamaya ve onun sürükle-bırak arayüz tasarım metodolojisine alışmışsak, bu tip kap muhtemelen daha iyidir, çünkü widget'lar veya bileşenler pencerede x koordinatları kullanılarak konumlandırılır ve Windows'ta bu nasıl takdir edilir.
Bu Gtk ve monodevelop ile mümkün olsa da, widget'ları hizalamanın en iyi yolu kutularla. İki tür kutu vardır yatay veya HBox ve dikey veya VBox. Bu kap türü, ekran boyutuna bağlı değildir. HBox ve VBox kapsayıcıları, bir bileşenin kapladığı bölgenin otomatik olarak yeniden boyutlandırılmasıyla ilgilenir.
Yatay veya dikey kutularla bir örnek görelim. Monodevelop'ta bir C# ve Gtk projesi oluşturacağız.
Bir Vbox kapsayıcı atadık ve son satırda bir Hbox kapsayıcı ekliyoruz.
Bu kapsayıcı türü, veri giriş ekranı gibi widget'ları yerleştirebileceğimiz bir ızgara oluşturmamız gerektiğinde yararlı olabilecek satırlar ve sütunlar içeren bir ızgaradır. Tablo ile bir örnek görelim. Monodevelop'ta bir C# ve Gtk projesi oluşturacağız, bir veri giriş formu oluşturacağız.
Bir Vbox konteyneri imzalıyoruz ve son satırda bir Hbox konteyneri ekliyoruz, önceki projede olduğu gibi bir Menubar ve aşağıdaki butonları ekliyoruz, ortada bir tablo konteyneri ekliyoruz.
Son satırı kaldıralım ve ardından ilk satırın ilk hücresine Etiketler için bir Vox kapsayıcı ekleyeceğiz. Ardından, ilk satırın ikinci hücresine Giriş veya metin kutuları için bir Vox kabı ekleyeceğiz.
Şimdi bir ekleyeceğiz etiket Fotoğraf ve bir widget Dosya Seçici Dosyayı seçmek için düğme, Ayrıca tablonun üçüncü satırına fotoğrafı gösterecek olan bir Görüntü widget'ı ekleyeceğiz, bu durumda görüntünün uygulamanın derleme dizininde olduğunu dikkate almalıyız. hata ayıklama yürütülürken otomatik olarak oluşturulur. Seçilen resim 100 piksel yüksekliğinde ve 100 piksel genişliğindedir.
Sabit kaplar, widget'ı sabit konumlarda ve sabit boyutlarda sürükleyip bırakmamıza izin verir. Bu kap, herhangi bir otomatik düzen yönetimi gerçekleştirmez ve pencere öğelerini yeniden boyutlandırmaz. Oyunlar, diyagramlarla veya OpenGL veya 3D gibi grafiklerle çalışan özel uygulamalar gibi daha sonra kod tarafından yönetilecek widget'ların gerekli olduğu bazı uygulamalarda kullanılırlar.
Sabit bir kap ve birkaç resim koyacağımız bir örnek görelim.
Çerçeveler veya Çerçeve Konteyneri
Çerçeveler veya Çerçeveler Visual Studio'da olduğu gibi Groupbox denetimi kullanılır, içinde bir widget grubu barındırmak için kullanılırlar, Bir çerçevenin amacı grup widget'ını kategorilere veya ilgili bölümlere göre tanımlamaktır, isteğe bağlı olarak bir başlığı olabilir. Başlığın konumu ve kutunun stili özelliklerden yapılandırılır.
Başlığın etiketi çerçevenin sol üst köşesinde görünür. Başlık girilmezse, boş olacak ve başlık görüntülenmeyecektir. Etiket metni, kullanılarak değiştirilebilir. Etiket özelliği.
İçinde Çerçeve yukarıdaki kaplardan herhangi birini birleştirebilirsiniz ve bunun tersi de geçerlidir.
Bir ekran oluşturalım Ana / Detay, çerçeveler kullanarak. bir oluşturacağız Monodevelop'ta C# ve Gtk projesi ve 4 satırlık bir Vbox konteyneri imzalıyoruz ve ilk satıra bir Menü çubuğu,
İkinci satırda bir çerçeve kabı ekliyoruz, etiketin başlığı ürünler olacak ve ona gölgeli bir IN atayacağız.
Vbox'ın üçüncü satırına Horizontal Separator widget'ı ile bir ayırıcı çubuk koyuyoruz ve Vbox'ın son satırına başka bir çerçeve ve bir Treeview koyacağız.
public MainWindow(): base (Gtk.WindowType.Toplevel) {Build(); // Ağaç görünümünün sütunlarını ve başlıklarını oluşturuyorum // Ürün sütununu oluşturuyorum Gtk.TreeViewColumn Product col = new Gtk.TreeViewColumn (); colProducto.Title = "Ürün"; // Gtk.TreeViewColumn stok sütununu oluşturuyorum colStock = new Gtk.TreeViewColumn (); colStock.Title = "Stok"; // Gtk.TreeViewColumn pricecol = new Gtk.TreeViewColumn() fiyat sütununu oluşturuyorum; colPrice.Title = "Fiyat"; // Sütunları ağaç görünümünde tvwlista.AppendColumn (colProduct); tvwlista.AppendColumn (colStock); tvwlista.AppendColumn (pricecol); // Saklamak için bir veri modeli oluşturuyorum ve burada üç veri türü ekleyeceğim text Gtk.ListStore store = new Gtk.ListStore (typeof (string), typeof (string), typeof (string)); // Modeli TreeView tvwlista'ya atıyorum.Model = store; // Model deposuna veri ekliyorum.AppendValues ("TABLET SAMSUNG", "5", "175"); store.AppendValues ("MACBOOK PRO", "10", "2680"); store.AppendValues ("SEGATE DISK 1 TB", "10", "85"); // Gtk.CellRendererText productCell = new Gtk.CellRendererText() ürününü gösterecek bir hücre oluşturuyoruz; // colProduct.PackStart (productCell, true) ürün veri hücresini ekliyoruz; // Stok veri hücresini ekleyin Gtk.CellRendererText cellStock = new Gtk.CellRendererText (); colStock.PackStart (cellStock, doğru); // Fiyat veri hücresini ekleyin Gtk.CellRendererText PriceCell = new Gtk.CellRendererText (); pricecol.PackStart (priceCell, doğru); // Veri hücrelerini her sütuna ekliyoruz ve satırlar oluşturulacak // colProducto.AddAttribute (cellProducto, "text", 0); colStock.AddAttribute (cellStock, "metin", 1); priceCol.AddAttribute (priceCell, "metin", 2); }Sonra çalıştırıyoruz ve sonuç şu olacak: