C++ 在QListWidget中使用图像,这可能吗?
我正在使用QT创建聊天messenger客户端。为了显示在线用户列表,我使用了一个C++ 在QListWidget中使用图像,这可能吗?,c++,qt,qlistwidget,C++,Qt,Qlistwidget,我正在使用QT创建聊天messenger客户端。为了显示在线用户列表,我使用了一个QListWidget,如下所示: listWidget = new QListWidget(horizontalLayoutWidget); listWidget->setObjectName("userList"); QSizePolicy sizePolicy1(QSizePolicy::Preferred, QSizePolicy::Expanding); sizePolicy1.setHorizon
QListWidget
,如下所示:
listWidget = new QListWidget(horizontalLayoutWidget);
listWidget->setObjectName("userList");
QSizePolicy sizePolicy1(QSizePolicy::Preferred, QSizePolicy::Expanding);
sizePolicy1.setHorizontalStretch(0);
sizePolicy1.setVerticalStretch(0);
sizePolicy1.setHeightForWidth(listWidget->sizePolicy().hasHeightForWidth());
listWidget->setSizePolicy(sizePolicy1);
listWidget->setMinimumSize(QSize(30, 0));
listWidget->setMaximumSize(QSize(150, 16777215));
listWidget->setBaseSize(QSize(100, 0));
listWidget->setContextMenuPolicy(Qt::CustomContextMenu);
通过不断刷新列表来显示用户,如下所示:(注意:有不同的频道,有不同的用户列表,所以据我所知,刷新列表是最有效的方法。)
void FMessenger::refreshUserlist()
{
如果(currentPanel==0)
返回;
listWidget=this->findChild(QString(“userList”);
listWidget->clear();
QList charList=currentPanel->charList();
QListWidgetItem*charitem=0;
FCharacter*字符;
foreach(字符、字符表)
{
charitem=新的QListWidgetItem(字符->名称());
//charitem->setIcon(QIcon(:/Images/status.png”);
listWidget->addItem(charitem);
}
}
这一直都很有效。我注释掉的一行是我遇到的问题:我当前的目标是能够用一个图像显示用户的在线状态,该图像表示用户是否忙、不在、可用等。显然,使用setIcon()
完全不起作用;这些项目仍然像以前一样显示,没有图标
我知道这可能不是这个函数需要使用的方式,但我在网上几乎找不到关于它的文档,也绝对没有有用的实现示例。我的问题是,有人能帮我解决这个问题吗?这是您进行调试的方式:
- 尝试同时使用图标和文本作为参数的构造函数
- 尝试在另一个上下文中使用该图标,以确保其可显示(使用相同的参数构造一个QIcon,并在其他地方使用它,例如QLabel!)
- 使用QListWidgetItem中的图标()接收回图标,然后查看该图标
- 创建一个新的QListWidget,不做任何更改,通常在MainWidget的构造函数中添加一些库存项。看看图标是否显示在那里
void FMessenger::refreshUserlist()
{
if (currentPanel == 0)
return;
listWidget = this->findChild<QListWidget *>(QString("userList"));
listWidget->clear();
QList<FCharacter*> charList = currentPanel->charList();
QListWidgetItem* charitem = 0;
FCharacter* character;
foreach(character, charList)
{
charitem = new QListWidgetItem(character->name());
// charitem->setIcon(QIcon(":/Images/status.png"));
listWidget->addItem(charitem);
}
}