Я использую QT для создания клиента чата.Для отображения списка онлайн-пользователей я использую 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()
{
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);
}
}
Это всегда работало идеально.Я прокомментировал строку, с которой у меня возникли проблемы: моя текущая цель состоит в том, чтобы иметь возможность отображать состояние пользователя в сети с изображением, которое показывает, заняты ли они, отсутствуют, доступны и т.д. Использование setIcon()
делает абсолютнохотя ничего, видимо;элементы по-прежнему отображаются как раньше, без значков.
Я знаю, что, вероятно, это не тот способ, которым нужно использовать эту функцию, но я нашел мало документации об этом в Интернете, и абсолютно нетполезные примеры реализаций.Мой вопрос: кто-нибудь может мне помочь с решением этой проблемы?