-
Notifications
You must be signed in to change notification settings - Fork 0
/
chattable.cpp
52 lines (46 loc) · 1.3 KB
/
chattable.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "chattable.h"
#include "ui_chattable.h"
#include <QGraphicsScene>
#include <QGraphicsView>
#include "chatitem.h"
#include <QResizeEvent>
chattable::chattable(QWidget *parent) :
QWidget(parent),
ui(new Ui::chattable)
{
ui->setupUi(this);
m_pscen = new QGraphicsScene(this);
m_pView = new QGraphicsView(m_pscen,this);
m_pView->show();
}
chattable::~chattable()
{
delete ui;
}
void chattable::AddItem(ItemData sData)
{
int nums = m_pscen->items().size();
int val = chatitem::GetHeight();
chatitem* pChat = new chatitem(sData);
m_pscen->addItem(pChat);
if(sData.iFlag == chatitem::left)
pChat->setPos(0,val*nums);
else
{
int width = this->rect().width() - pChat->boundingRect().width();
pChat->setPos(width,val*nums);
}
}
void chattable::ResizeView()
{
int nums = m_pscen->items().size();
int height = nums*chatitem::GetHeight() > this->size().height()? nums*chatitem::GetHeight():this->size().height();
m_pscen->setSceneRect(0,0,this->rect().width(),height);
}
void chattable::resizeEvent(QResizeEvent *event)
{
QSize size = event->size();
m_pView->setFixedSize(size.width(),size.height());
m_pView->setAlignment(Qt::AlignLeft | Qt::AlignTop);
ResizeView();
}