要让 QLabel 填充整个 answerItem,你可以在布局中使用合适的设置。具体而言,你需要确保在设置 QVBoxLayout 的时候,将 label 的尺寸策略调整为可扩展的,并且将布局的间距和边距设置为零。
以下是修改后的代码示例:
answerItem::answerItem(QWidget *parent, int paperNumber)
: QWidget(parent), ui(new Ui::answerItem) {
label = new QLabel(this); // 在构造函数中初始化
label->setStyleSheet("background-color: white;");
// 设置 QLabel 的尺寸策略,使其能够填充布局
label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
QVBoxLayout *layout = new QVBoxLayout(this);
// 设置布局的间距和边距为0,以便标签能填满整个区域
layout->setSpacing(0);
layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(label); // 将 QLabel 添加到布局中
m_iPaperIndex = paperNumber + 1;
m_choose = nullptr;
m_blank = nullptr;
m_trueOrfalse = nullptr;
m_questions = nullptr;
m_stData = nullptr;
}
关键点说明:
label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);:这行代码设置了label的尺寸策略,使其在垂直和水平方向上都可以扩展,从而允许它填充父窗口。间距与边距设置:通过调用
layout->setSpacing(0);和layout->setContentsMargins(0, 0, 0, 0);来消除可能存在的空隙,确保标签占据整个answerItem。
通过这些调整,您应该能使得 label 填满整个 answerItem。
内容由零声教学AI助手提供,问题来源于学员提问




