2012-01-24 8 views
1

글쎄, 나는 Qt에서 초보자이고 문제가있다.QListWidgetItem이 스크롤에 의해 숨겨져 있는지 어떻게 알 수 있습니까?

내 UI에 QListWidget이 7 개 있고, 4 개의 항목 만 표시되고 다른 하나는 스크롤바를 사용하여 표시됩니다. QListWidet 위와 아래에 화살표 이미지를 표시하려면 스크롤 할 항목이 더 많은 것보다 표시됩니다.

좋아, 항목이 숨겨져 있는지 확인할 수 있지만 setHidden() 함수에 의해 숨겨져있는 경우에만 볼 수 있습니다. 그리고 그것은 두루마리에 의해 언제 숨겨져 있습니까? 런타임에 이것을 볼 수 있습니까? 그 항목은 거기에 있지만 스크롤은 그것을 숨기고 있기 때문에, 맞습니까?

나는 이것에 관해 약간의 수색을 여기에서 찾았다. 그러나 나는 발견하지 않았다. 죄송합니다 영어, 어쩌면 혼란 스러울 지 모르지만 누군가 도와 주시면 ...

고마워요!

답변

0

이렇게하는 방법에 대한 기본 예제가 있습니다. 여기에 먼저 MainWindow를 클래스의 목록은 구현 :

MainWindow::MainWindow(QWidget *parent) : 
QMainWindow(parent), 
ui(new Ui::MainWindow) 

{

ui->setupUi(this); 

QListWidget *listW = new QListWidget; 
//Add some items 
for(int i = 0; i < 20; i++) { 
    QListWidgetItem *item = new QListWidgetItem("Item" + QString::number(i)); 
    listW->addItem(item); 
} 

listW->setVerticalScrollMode(QAbstractItemView::ScrollPerItem); 
listW->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); 
//Set reimplemented scroll bar 
listW->setVerticalScrollBar(new ScrollBar); 
setCentralWidget(listW); 

}

내가 :: Qt는 스크롤 막대 정책을 설정 한 코드에서 볼 수 있듯이 ScrollBarAsNeeded. 이를 통해 스크롤바의 이벤트 표시/숨기기에 반응 할 수 있다는 장점을 활용할 수 있습니다.

ScrollBar::ScrollBar(QWidget *parent) : 
QScrollBar(parent) 
{ 
} 


void ScrollBar::hideEvent(QHideEvent *e) 
{ 
    emit showTip(false); 
} 


void ScrollBar::showEvent(QShowEvent *e) 
{ 
    emit showTip(true); 
} 

지금 이미지를 그립니다 슬롯에 스크롤바에서 showTip (BOOL) 신호를 연결할 수 있습니다 그리고 여기 QScrollBar의 재 구현입니다.

+0

감사합니다. @ 녹스, 나는 이것을 사용하려고 시도하고 답변을 게시 할 것입니다. –