QListWidget::setItemWidget问题

Marcelxx 2017-11-13 04:04:38

m_pItemWidget = new QLabel();
m_pItemWidget->setText("111");

ui.listWidget->setItemWidget(ui.listWidget->item(0),m_pItemWidget);

ui.listWidget_2->setItemWidget(ui.listWidget_2->item(0),m_pItemWidget);
ui.listWidget->setItemWidget(ui.listWidget->item(0),m_pItemWidget);

代码如上,创建一个Label,先将这个Label设置为第一个ListWidget的第一个Item的Widget,然后还是讲这个Label设置为第二个ListWidget的第一个Item的Widget。这个时候在第二个ListWidget上能正确显示Label。
但是如果再讲这个Label设置为第一个ListWidget的Item的Widget,结果Label还是显示在第二个ListWidget上显示。
请问,这个是什么问题?
...全文
604 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我也想问这个,QQ457726733,求帮忙
Marcelxx 2017-11-15
  • 打赏
  • 举报
回复
引用 6 楼 Liuzwang 的回复:
好奇怪,label的指针内容不能复制,而int却可以。
估计是Label的赋值函数没有公开吧。
Marcelxx 2017-11-15
  • 打赏
  • 举报
回复
引用 8 楼 qqwangfan 的回复:
从QObject继承下来的类都没有赋值和拷贝构造函数,QLabel是从QWidget继承下来,而QWidget又是从QObejct继承下来,因此不允许复制。窗体都是唯一一个,不允许复制,因此上面的同一个QLabel只能用在一个地方,如果需要2个地方都用,必须另外new一个。
那我遇到的这个不显示的问题,有办法解决吗?
  • 打赏
  • 举报
回复
从QObject继承下来的类都没有赋值和拷贝构造函数,QLabel是从QWidget继承下来,而QWidget又是从QObejct继承下来,因此不允许复制。窗体都是唯一一个,不允许复制,因此上面的同一个QLabel只能用在一个地方,如果需要2个地方都用,必须另外new一个。
Liuzwang 2017-11-14
  • 打赏
  • 举报
回复

好奇怪,label的指针内容不能复制,而int却可以。
Marcelxx 2017-11-14
  • 打赏
  • 举报
回复
引用 4 楼 Liuzwang 的回复:
我试了一下,确实是。 但是
 QLabel *m_pItemWidget = new QLabel();
    m_pItemWidget->setText("111");
    QLabel *clone=new QLabel();
    clone->setText("111");


    ui->listWidget->setItemWidget(ui->listWidget->item(0),m_pItemWidget);

    ui->listWidget_2->setItemWidget(ui->listWidget_2->item(0),clone);
新建一个label可以吗?
现在就是要避免新建啊,因为原来的对象有一套机制,删除了那套机制就跑不通了。
Liuzwang 2017-11-14
  • 打赏
  • 举报
回复
我试了一下,确实是。 但是
 QLabel *m_pItemWidget = new QLabel();
    m_pItemWidget->setText("111");
    QLabel *clone=new QLabel();
    clone->setText("111");


    ui->listWidget->setItemWidget(ui->listWidget->item(0),m_pItemWidget);

    ui->listWidget_2->setItemWidget(ui->listWidget_2->item(0),clone);
新建一个label可以吗?
Marcelxx 2017-11-14
  • 打赏
  • 举报
回复
什么问题啊,还是没有解决。。。。。。。。。

16,202

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧