많은 항목이있는 목록 위젯을 가지고 있다고 가정 해 봅니다. 사용자가 스크롤하여 더 많은 항목을 볼 때 보려는 항목에 대해 작업을 수행하려고합니다. 사용자 항목에 의해 현재 표시되는 항목 itemsViewedChanged (QListWidgetItems * items) 이벤트를 트리거 할 수 있습니까?QListWidget 표시된 항목의 목록을 가져옵니다.
아니요, 그렇다면 어떻게 구현할 수 있습니까? 어떤 답변
많은 항목이있는 목록 위젯을 가지고 있다고 가정 해 봅니다. 사용자가 스크롤하여 더 많은 항목을 볼 때 보려는 항목에 대해 작업을 수행하려고합니다. 사용자 항목에 의해 현재 표시되는 항목 itemsViewedChanged (QListWidgetItems * items) 이벤트를 트리거 할 수 있습니까?QListWidget 표시된 항목의 목록을 가져옵니다.
아니요, 그렇다면 어떻게 구현할 수 있습니까? 어떤 답변
는, 일반적인 기술은 내가 사용하는 것에 대한
감사합니다 QListWidget 조금 더 간단 할 것이기 (나는 일반적으로 PyQt는을 사용하여 구문을 용서, 그래서 이것은 C++로 해제 될 수 있음) : 당신에게 목록 위젯에 표시 할 항목의 목록을 얻을 것
QList<QListWidgetItem*> MyListWidget::visibleItems() {
QList<QListWidgetItem>* output = new QList<QListWidgetItem*>();
// make sure we have some items
if (!this->count()) {
return output;
}
// calculate the beginning and end items in our range
QListWidgetItem* minimumItem = this->itemAt(5, 5);
QListWidgetItem* maximumItem = this->itemAt(5, this->height() - 5);
if (!minimumItem) { minimumItem = this->item(0); }
if (!maximumItem) { maximumItem = this->item(this->count() - 1); }
// get the start and end rows
int minimum_row = this->indexForItem(minimumItem)->row();
int maximum_row = this->indexForItem(maximumItem)->row();
for (int row = minimum_row; row <= maximum_row; row++) {
output->append(this->item(row));
}
return output;
}
합니다. 사용자가 편집 할 때 동적으로 항목을 확인하고 수정하려면 목록 위젯에 대한 valueChanged (int) 및 rangeChanged() 신호에 연결할 수 있습니다. 이렇게하면 사용자가보기를 스크롤하거나 크기를 조정할 때 신호에 반응하여 현재 표시되는 항목 목록을 수집하게됩니다.
정말 고마워요! 나는 모양을 가지고있을 것이고 이것이 내 문제를 해결할 수 있다면 알려 줄 것이다. – hakermania
오류, 내 listwidget에 대해 valueChanged (int) 또는 rangeChanged() 슬롯이있다 ... – hakermania
죄송합니다 - 그 신호는 QListWidget 's verticalScrollbar, 목록 위젯 자체가 아닙니다. - listWidget() -> verticalScrollBar() –