当你将头文件和源文件分开写时,可以按照以下方式组织代码:
ChatBubble.h:
#ifndef CHATBUBBLE_H
#define CHATBUBBLE_H
#include <QWidget>
#include <QLabel>
#include <QHBoxLayout>
class ChatBubble : public QWidget
{
Q_OBJECT
public:
ChatBubble(const QString& text, bool isSender, QWidget* parent = nullptr);
private:
QLabel* m_label;
bool m_isSender;
};
#endif // CHATBUBBLE_H
ChatBubble.cpp:
#include "ChatBubble.h"
#include <QFontMetrics>
ChatBubble::ChatBubble(const QString& text, bool isSender, QWidget* parent)
: QWidget(parent), m_isSender(isSender)
{
m_label = new QLabel(text);
int length1 = text.length();
QFontMetrics fontMetrics(m_label->font());
int charWidth = fontMetrics.width('A'); // 获取字符'A'的宽度
int charHeight = fontMetrics.height(); // 获取字符高度
if(length1%14 == 0 && length1 != 0) {
m_label->setFixedSize(charWidth * 16, charHeight * (length1 / 14));
} else {
m_label->setFixedSize(charWidth * 16, charHeight * (length1 / 14 + 1));
}
QHBoxLayout* layout = new QHBoxLayout(this);
layout->addWidget(m_label);
if (isSender) {
layout->addStretch();
setStyleSheet("background-color: #DCF8C6; border-radius: 10px;");
} else {
layout->insertStretch(0);
setStyleSheet("background-color: #E7E7E7; border-radius: 10px;");
}
}
在头文件 ChatBubble.h
中声明了 ChatBubble
类,并在源文件 ChatBubble.cpp
中实现了类的构造函数。
这样,你可以将上述两个文件分别保存为 ChatBubble.h
和 ChatBubble.cpp
。在需要使用 ChatBubble
类的其他地方,只需包含头文件 "ChatBubble.h"
即可。
内容由零声教学AI助手提供,问题来源于学员提问