2010-01-06 21 views

cevap

11

Sorunuzu doğru anlamak widget'inizin kaydırma davranışını yeniden tanımlamak istiyoruz. Tahmin edersek, kullanıcılar kaydırma okuna bastığında (aşağıdaki görüntüde b olarak işaretlenir) liste görünümünün öğe yüksekliği tarafından kaydırılmasıdır. Bir liste görünümüne bağlı dikey bir kaydırma çubuğu için

alt text http://qt.nokia.com/doc/4.6/images/qscrollbar-picture.png

, kaydırma oklar, tipik olarak yukarı veya aşağı akım konumu, bir "satır" hareket edebilir ve küçük bir miktar sürgünün konumunu ayarlamak. Bu durumda hattın bir simge yüksekliği olduğuna inanıyorum. Öğeleri yüksekliğini item delegate (setItemDelegate) yükleyerek ve sizeHint yöntemini geçersiz kılarak ayarlayabilirsiniz. Bu, bu sorunu çözmenize yardımcı olmaz. Deneyebileceğiniz bir QListView alt öğesi oluşturmak ve updateGeometries yöntemini geçersiz kılmaktır. Orada istediğiniz yere dikey kaydırma çubuğu adımını ayarlayabilirsiniz, bu görev için 1 veya 2 sanırım. Aşağıda özel liste görünümü bir örnektir: Bu yardımcı olur

class TestListView : public QListView 
{ 
Q_OBJECT 
public: 
    explicit TestListView(QWidget *parent = 0); 

protected: 
    virtual void updateGeometries(); 
}; 

TestListView::TestListView(QWidget *parent) : 
    QListView(parent) 
{ 
    //??? 
} 

void TestListView::updateGeometries() 
{ 
    QListView::updateGeometries(); 
    verticalScrollBar()->setSingleStep(2); 
} 

umut, Doğru özellik gibi görünüyor

+0

İlginç olanla oynamak gibi görünüyor. Bunu yakında deneyeceğim. Teşekkürler! –

+0

Mükemmel çalıştı, teşekkürler! –

İlgili konular