调整ApplyItem的界面
前言
在上一集,我们就完成了一个clickItem的一个函数,继承SessionFriendItem并通过它添加不同的Item,并且我添加了它的枚举类。
在上一集的最后,我们提了一嘴,我们要修改ApplyItem的样式。
分析与编码
首先,我们需要先删除掉父类的messageLabel,我们要先把父类添加一个protected类型的成员变量messageLabel,我们就不在父类构造函数里面手动添加messageLabel了,但是为什么要使用protected而不去使用private呢?
我们的子类要去访问父类的成员变量,是无法访问private修饰的成员变量的,但是可以访问protected的成员变量。
ApplyItem::ApplyItem(QWidget *owner, const QString &userId, const QIcon &avatar, const QString &name)
: SessionFriendItem(owner,avatar,name,""),userId(userId)
{
//要先移除父类的 messageLabel
QGridLayout* layout = dynamic_cast<QGridLayout*>(this->layout());
layout->removeWidget(messageLabel);
}
但是我们一定不要忘了内存泄漏的问题!
delete messageLabel;//要释放内存
之后我们需要添加两个按钮,一个是接受按钮,另一个是拒绝按钮。
QPushButton* acceptBtn = new QPushButton();
acceptBtn->setText("接受");
QPushButton* rejectBtn = new QPushButton();
rejectBtn->setText("拒绝");
之后我们把两个按钮添加到布局当中。
layout->addWidget(acceptBtn, 1, 2, 1, 1);
layout->addWidget(rejectBtn, 1, 3, 1, 1);
那么,我们要先来看一样debug的效果!
可以看到,他不是一点丑,是特别的丑,那么我们就要去修改一下widget里面的头像与名字。
layout->addWidget(avatarBtn,0,0,2,2);
layout->addWidget(nameLabel,0,2,1,8);
layout->addWidget(messageLabel,1,2,1,8);
再来看效果
和谐多了!当然可以自己去尝试,多试就出来了。
那么这一集我们就先到这里!