• 4445阅读
  • 4回复

[讨论]QT堆栈窗口切换问题 [复制链接]

上一主题 下一主题
离线johnrambos
 

只看楼主 倒序阅读 楼主  发表于: 2017-10-19
现在正在做一个聊天界面,类似于微信的,左边是好友列表(ListWidget),右边是聊天界面(DockWidget)
通过语句:
    connect(ui->listWidget,SIGNAL(currentRowChanged(int)),this,SLOT(show_chat_page(int)));    connect(ui->listWidget,SIGNAL(currentRowChanged(int)),ui->stackedWidget,SLOT(setCurrentIndex(int)));
其中一个槽函数:
void MainWindow::show_chat_page(int flag){    QString username= ui->listWidget->item(flag)->text();    Widget *widget  = new Widget(ui->stackedWidget,username);    ui->stackedWidget->insertWidget(flag,widget);}
在一次发送信息:

再切换列表好友:


再切换回来

发现聊天信息不见了;

请问怎么才能在切换回来的时候保持着原来的聊天记录。
离线小韩老师

只看该作者 1楼 发表于: 2017-10-19
你是每次都new一个widget,那肯定切换回来就是一个空白的,你用切换的时候判断对应聊天记录的widget是否存在,存在就直接显示,不存在再new一个
离线johnrambos

只看该作者 2楼 发表于: 2017-10-20
可是我的那个是widget继承于stackedWidget,怎么判断Widget在之前存不存在?
离线小韩老师

只看该作者 3楼 发表于: 2017-10-20
你遍历一遍你的ui->stackedWidget所有的widget对象,毕竟是你定制的widget已经创建时的标识信息你可以获取到,比如用户名作为标识,已经存在的就将其设置为当前显示的
离线johnrambos

只看该作者 4楼 发表于: 2017-10-21
回 小韩老师 的帖子
小韩老师:你遍历一遍你的ui->stackedWidget所有的widget对象,毕竟是你定制的widget已经创建时的标识信息你可以获取到,比如用户名作为标识,已经存在的就将其设置为当前显示的 (2017-10-20 16:42) 

好的,谢谢小韩老师,另外老师您的教学视频是不是发在了优酷和b站上,我都有看到过诶
快速回复
限100 字节
 
上一个 下一个