Russian Qt Forum
Ноябрь 24, 2024, 18:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Динамичесткое изменения размеров widget в QListWidget  (Прочитано 1889 раз)
WILY
Гость
« : Май 31, 2016, 16:51 »

Добрейшего дня. Вопросик такой. Я пытаюсь создать чат(переписку) между двумя людьми и хотелось бы сделать так, что когда человек пишет второе сообщение подряд, то сообщение просто добавлялось к предыдущему сообщению.
Как есть сейчас



Когда я добавляю текст, то получаю что-то вроде



Что и логично, потому что, размер item на QListWidget не изменяется, тогда я попробовал его менять, но приложение падает. Вот код:

Код
C++ (Qt)
void wdgForLC::on_pbt_Send_clicked()
{
 
   if(!ui->inputtext_te->toPlainText().trimmed().isEmpty())
   {
       if (!mIsClientWrite)
       {
           newMsg = new dlgChatLk();
           paintMessage(ui->inputtext_te->toPlainText());
           ui->inputtext_te->setText("");
       } else
       {
           appendMessege(ui->inputtext_te->toPlainText());
           ui->inputtext_te->setText("");
       }
   }
}
 
void wdgForLC::paintMessage(QString msgText)
{
 
   QListWidgetItem *item= new QListWidgetItem();
   newMsg->setMessege(msgText);
   newMsg->show();
   QSize itemSize(newMsg->width(),newMsg->height());
   item->setSizeHint(itemSize);
   ui->chatWidget->addItem(item);
   ui->chatWidget->setItemWidget(item,newMsg);
   mIsClientWrite = true;
}
 
void wdgForLC::appendMessege(QString msgText)
{
 
   qDebug() << ui->chatWidget->count();
   QListWidgetItem *item =  ui->chatWidget->item(ui->chatWidget->count());
   newMsg->appendMessege(msgText);
  newMsg->show();
   QSize itemSize(newMsg->width(),newMsg->height());
   item->setSizeHint(itemSize);
 
}
 

Может кто-нибудь делал что-то похожее, может есть советы, или указания, что я делаю не так?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Май 31, 2016, 17:00 »

Код
C++ (Qt)
QListWidgetItem *item =  ui->chatWidget->item(ui->chatWidget->count() - 1);
if( !item )
   return;
 
Записан

Qt 5.11/4.8.7 (X11/Win)
WILY
Гость
« Ответ #2 : Май 31, 2016, 17:08 »

Спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.086 секунд. Запросов: 22.