2010-02-01 11 views
7

QTableWdiget, basit ızgara ekranları için muhteşem. Renklerin, yazı tiplerinin vb. Değiştirilmesi basittir. Bununla birlikte, ızgaraya daha az dikey boşlukla 'daha sıkı' bir görünüm vermeyi başaramadım. Görüyorum Qt dokümantasyon görüşmeler (örneğin here) parçacıklar etrafında QTableWidget: Daha az dikey aralıklı dolgu ile daha sıkı çizgiler nasıl alabilirim?

ama bu ayarladığınızda ben sadece tüm etrafında yer değişimi almak dolgu

  • sınır
  • marjı
    • hakkında İçinde ızgara ızgarası değil.

      Bunu, QTableWidget görüntüsünü daha sıkı yapmak için doğrudan (stil sayfası veya kodlanmış seçeneklerle) nasıl ayarlayabilirim?

  • cevap

    5

    kod çürük olabilir 'h' alma. Bu sadece bir örnekti. Kopyalayın & aşağıdaki oldukça ilkel kod yapıştırın. "SetDefaultSectionSize()" içindeki değeri değiştirin, yeniden derleyin ve çalıştırın. Farkı görmelisin. Bunu 10 veya 50'ye ayarlamak görünür sonuçlar verir. Yukarıdaki kodda, QFontMetrics veya QFont bir şeyleri karıştırıyor olabilir.

    Yüksekliğini almak istediğiniz her şeyi kullanabilirsiniz, ancak yazı tipi boyutu en anlamlı olanıdır.

    #include <QtGui> 
    
    int main(int argc, char* argv[]) 
    { 
    QApplication app(argc, argv); 
    
    QDialog* my_dialog = new QDialog(); 
    QHBoxLayout* layout = new QHBoxLayout(); 
    QTableWidget* my_table_widget = new QTableWidget(my_dialog); 
    
    my_table_widget->setRowCount(10); 
    my_table_widget->setColumnCount(10); 
    my_table_widget->verticalHeader()->setDefaultSectionSize(15); 
    layout->addWidget(my_table_widget); 
    my_dialog->setLayout(layout); 
    my_dialog->resize(500, 200); 
    my_dialog->show(); 
    
    return app.exec(); 
    } 
    

    DÜZENLEME: Burada bir kod bloğunu nasıl biçimlendireceğimi bilmiyorum ... beni affet. :)

    Düzenleme 2: Bunu sabit ve aşağıdaki basit tighterTable.pro dosya boyunca yardımcı olur.

    TEMPLATE = app 
    TARGET = 
    DEPENDPATH += . 
    INCLUDEPATH += . 
    
    SOURCES += tighterTable.cpp # if that is the filename 
    

    Bunun için büyük bir yağ demetine teşekkürler.BTW: Kod olarak düzenlemek sadece dört boşlukla girintilidir ve/veya biçimlendirici satırdaki küçük '101010' ile düğmeye basmaktır.

    3

    QTableWidget kullanışlı bir modeldir ve görünümdür. Tipik olarak, QAbstractItemModel'un data() yöntemi, her hücrenin hangi boyutta olması gerektiğini görüntülemek için kullanılan bir SizeHintRole sağlar.

    QTableWidget'i kullandığınızdan, dahili modeli tarafından döndürülen boyut ipucunu değiştirmek için yapabileceğiniz bir şey olduğunu düşünmüyorum. Hatta Qt style sheet documentation bu alanda hiçbir şeyden bahseder.

    +0

    Merhaba Kaleb, Cevabı takdir ediyorum - Benzer bir sonuca az ya da çok yaklaşmıştım ("bunu yapamıyorum") ama konuyla ilgili ikinci bir göze sahip olmak iyidir. –

    5

    Aradığın şey çok saçma bir çözüm IMHO'ya sahip, ama işe yarıyor. Üstbilgileri defaultSectionSize() üyelerini ayarlamanız gerekir. VerticalHeader() & horizontalHeader() aracılığıyla erişildi. Sütun genişliğini hiçbir zaman gerçekten atamadım. Projelerimin çoğu satır eklemeyi, sütun eklememi gerektiriyor ve ben sadece resizeColumnsToContents'ı arıyorum veya manuel yeniden boyutlandırma yapıyorum. Ancak, satırlar irksome. Genellikle QFontMetrics kullanarak yazı tipinin yüksekliğini elde ederim ve 2 ekleyin. Sonradan eklenen herhangi bir satır bu boyuta sahip olmalı ve viyola: daha sıkı görünmelidir.

    Bu yardımcı olur umarım.

    DÜZENLEME:

    Untested kodu:

    QFontMetrics fm(my_font); 
    int h = fm.height() + 2; 
    my_table->verticalHeader()->setDefaultSectionSize(h); 
    
    +0

    Paul, Çalışamıyorum. "Fm" ve "h" harflerini alıp ayarlayabilirim, ancak tablo görünümde değişmiyor. Satırlarımı silip yenilerini ekleyip eklememem de önemli değil - hepsi bu kadar fazla dikey boşluğa sahipler. –

    +0

    Çalışıyor! QTableWidget'de satır yüksekliği değiştirildi. – Zmey

    0

    QTableWidget -> verticalHeader -> setMinimumSectionSize() doğru yoldur ve ui'de ayarlanabilir.

    İlgili konular