问题描述
更多背景: 我正在制作一个类似信使的小应用程序,所以我需要每 3 秒左右刷新一次消息。 当然,为了不烦人,我必须让页面与刷新前的位置相同,否则它只是烦人且无法使用。
所以,我的算法是这样的:
获取滚动条值-> 刷新小部件-> 向下滚动
一切正常,除了向下滚动部分,我不明白为什么
这是每次刷新时执行的代码:
void Chatwindow::Reload(){
int y = messages->verticalScrollBar()->value();
qDebug()<<"Reloading conversation";
qDebug()<<y;
last_loaded_message = 0;
QString group_name = current_group;
QString group_creator = current_group_creator;
title->setText(group_name);
messages->setWidgetResizable(1);
last_loaded_message = 0;
clearLayout(messages_layout);
messages_widget->resize(messages->width(),0);
QList<QList<QString>> me = database->getMessages(*username,group_name,group_creator);
if (me.size() != 0){
for(int i = 0; i<me.size();++i){
last_loaded_message =i;
QList<QString> m = me[i];
QString name = m[0];
QString message = m[1];
QString date = m[2];
if (name != username){
MessageWidget *a = new MessageWidget(name,message,date,1);
messages_layout->addWidget(a,Qt::AlignLeft);
connect(a,SIGNAL(pleaseDelete(QString,QString,QDateTime)),this,SLOT(deleteMessage(QString,QDateTime)));
//messages_widget->resize(messages_widget->width(),messages_widget->width() + a->height() + a->height());
qDebug()<<a->height();}
else{
MessageWidget *a = new MessageWidget("Vous",date);
messages_layout->addWidget(a,Qt::AlignRight);
connect(a,QDateTime)));
//messages_layout->addSpacing(spacing);
//messages_widget->resize(messages_widget->width(),messages_widget->width() + a->height() + a->height());
qDebug()<<a->height(); }};}
messages->verticalScrollBar()->setValue(200);}
预先感谢任何试图提供帮助的人:-)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)