qlistwidge 隐藏_如何知道QListWidgetItem是否被滚动隐藏?

Well, i'm newbie in Qt and i have a problem.

I have a QListWidget in my UI with 7 items, just 4 items are showed and the other are showed after to use scrollbar. I want to show a arrow image above and below QListWidet than will show than there are more items to scroll.

Ok, i can to see if a item is hidden, but just if it is hidden by setHidden() function. And when is it hidden by scroll? Can i see this in run time? Because the item is there, but scroll is hiding it, right?

I searched some post about this here, but i did not find. Sorry my english, maybe be confused, but if someone to can help me...

Thanks a lot!

解决方案

So Here is basic example on how to do it. First here is the listing of the MainWindow class

implementation:

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);

}

As you can see from the code I have set the scroll bar policy to Qt::ScrollBarAsNeeded. By doing that we can take advantage of the fact that we can now react on show/hide events from the scrollbar. And here is reimplementation of the QScrollBar:

ScrollBar::ScrollBar(QWidget *parent) :

QScrollBar(parent)

{

}

void ScrollBar::hideEvent(QHideEvent *e)

{

emit showTip(false);

}

void ScrollBar::showEvent(QShowEvent *e)

{

emit showTip(true);

}

Now you can connect the showTip(bool) signal from the ScrollBar to the slot that draws the image.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值