Использование изображений в QListWidget, возможно ли это? - PullRequest
2 голосов
/ 28 февраля 2011

Я использую 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() делает абсолютнохотя ничего, видимо;элементы по-прежнему отображаются как раньше, без значков.

Я знаю, что, вероятно, это не тот способ, которым нужно использовать эту функцию, но я нашел мало документации об этом в Интернете, и абсолютно нетполезные примеры реализаций.Мой вопрос: кто-нибудь может мне помочь с решением этой проблемы?

1 Ответ

3 голосов
/ 28 февраля 2011

Вот как вы можете провести отладку:

  • Попробуйте использовать конструктор, в котором в качестве аргументов используются как значок, так и текст.
  • Попробуйте использовать этот значок в другом контексте, чтобы обеспечить его отображение (создайте QIcon с тем же аргументом и используйте его в другом месте, например, QLabel!).
  • Используйте icon () из QListWidgetItem, чтобы получить обратно значок, а затем посмотрите на этот QIcon.
  • Создайте новый QListWidget, ничего не меняйте и обычно добавляйте некоторые стоковые элементы в конструктор вашего MainWidget. Посмотрите, появляются ли значки там.
...