2012-01-24 5 views
1

Ну, я новичок в Qt, и у меня проблема.Как узнать, скрыт ли QListWidgetItem с помощью прокрутки?

У меня есть 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. Делая это, мы можем воспользоваться тем фактом, что теперь мы можем реагировать на события show/hide из полосы прокрутки. А вот перевыполнение QScrollBar:

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


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


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

Теперь вы можете подключить сигнал showTip (BOOL) из ScrollBar в слот, который рисует изображение.

+0

Спасибо @Neox, я попытаюсь использовать это и опубликую ответ. –