简体   繁体   English

QListWidget 一旦我到达 QListWidget 的末尾如何引发事件

[英]QListWidget How to raise an event once I reach end of QListWidget

In QListWidget, there are many items.在 QListWidget 中有很多项。 I want to raise an event once I reach end of the list.一旦到达列表末尾,我想发起一个事件。 How can I do?我能怎么做?

#include <QListWidget>
#include <QScrollBar>
#include <QWidget>

class Widget: public QWidget
{
    Q_OBJECT
    public:
          Widget(QWidget* parent = 0);
    private:
          QListWidget *listWidget;
          QScrollBar *verticalScrollBar;
    private slots:
          void onScrollBarValueChanged(int);
    signals:
          void signalToEmit();
}

Widget::Widget(QWidget *parent):QWidget(parent)
{
    listWidget = new QListWidget(this);   
    verticalScrollBar = listWidget.verticalScrollBar();
    connect(verticalScrollBar,SIGNAL(valueChanged(int)),
    this,SLOT(onScrollBarValueChanged(int)));
}

void Widget::onScrollBarValueChanged(int value)
{
    if(value == verticalScrollBar->maximum())
        emit signalToEmit();
}

Three year later, but I was looking for an answer for that and I came up with an easy way:D三年后,但我一直在寻找答案,我想出了一个简单的方法:D

Maybe It's not that "clean" but here you go:也许它不是那么“干净”,但在这里你 go:

QListWidget* mylist;

QScrollBar* scrollBar = mylist->findChildren<QScrollBar*>().at(1);
    /* position 0 -> horizontal */
    /* position 1 -> vertical   */
connect(scrollBar, SIGNAL(valueChanged(int)), this, SLOT(ScrollBarChanged(int)));

Now you create the slot:现在创建插槽:

void TabWebView::ScrollBarChanged(int value)
{
    QScrollBar *sender = (QScrollBar*)QObject::sender();

    if (sender->maximum() == value)
        /* Do Things */
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM