Как узнать, скрыт ли QListWidgetItem прокруткой? - PullRequest
1 голос
/ 24 января 2012

Ну, я новичок в Qt, и у меня есть проблема.

У меня есть QListWidget в моем пользовательском интерфейсе с 7 элементами, отображаются только 4 элемента, а другие отображаются после использования полосы прокрутки.Я хочу показать изображение стрелки выше и ниже QListWidet, чем будет показано, чем больше элементов для прокрутки.

Хорошо, я могу видеть, скрыт ли элемент, но только если он скрыт с помощью setHidden ()функция.А когда он скрыт свитком?Могу ли я увидеть это во время выполнения?Потому что предмет есть, но свиток скрывает его, верно?

Я искал какой-то пост об этом здесь, но не нашел.Извините за мой английский, возможно, я запутался, но если кто-то может мне помочь ...

Большое спасибо!

1 Ответ

0 голосов
/ 24 января 2012

Итак, вот основной пример того, как это сделать. Сначала вот список класса 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. Делая это, мы можем воспользоваться тем, что теперь мы можем реагировать на события шоу / скрытия с полосы прокрутки. И вот переопределение 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) от полосы прокрутки к слоту, который рисует изображение.

...