101 lines
3.1 KiB
C++
101 lines
3.1 KiB
C++
|
#include "customwidget.h"
|
|||
|
#include <QVBoxLayout>
|
|||
|
#include <QLabel>
|
|||
|
#include <QTextEdit>
|
|||
|
#include <QTableWidget>
|
|||
|
#include <QHeaderView>
|
|||
|
#include <QGraphicsDropShadowEffect>
|
|||
|
|
|||
|
CustomWidget::CustomWidget(QWidget *parent)
|
|||
|
: QWidget{parent}
|
|||
|
{
|
|||
|
QWidget *centralWidget = new QWidget();
|
|||
|
QGridLayout *mainLayout = new QGridLayout(this);
|
|||
|
mainLayout->addWidget(centralWidget);
|
|||
|
|
|||
|
//实例阴影shadow
|
|||
|
QGraphicsDropShadowEffect *shadow = new QGraphicsDropShadowEffect(this);
|
|||
|
//设置阴影距离
|
|||
|
shadow->setOffset(0, 0);
|
|||
|
//设置阴影颜色
|
|||
|
shadow->setColor(QColor(44,44,44));
|
|||
|
//设置阴影圆角
|
|||
|
shadow->setBlurRadius(16);
|
|||
|
//给嵌套QDialog设置阴影
|
|||
|
centralWidget->setGraphicsEffect(shadow);
|
|||
|
|
|||
|
QVBoxLayout *mainLayout1 = new QVBoxLayout(centralWidget);
|
|||
|
mainLayout1->setSpacing(5); // 控件间间隔
|
|||
|
|
|||
|
// 上1/3:QLabel
|
|||
|
QWidget *topWidget = new QWidget();
|
|||
|
mainLayout1->addWidget(topWidget, 1); // 拉伸因子为1
|
|||
|
setupTopSection(topWidget);
|
|||
|
|
|||
|
// 中1/3:两个垂直排列的QTextEdit
|
|||
|
QWidget *midWidget = new QWidget();
|
|||
|
mainLayout1->addWidget(midWidget, 1);
|
|||
|
setupMidSection(midWidget);
|
|||
|
|
|||
|
// 下1/3:表格
|
|||
|
QWidget *bottomWidget = new QWidget();
|
|||
|
mainLayout1->addWidget(bottomWidget, 1);
|
|||
|
setupBottomSection(bottomWidget);
|
|||
|
}
|
|||
|
|
|||
|
void CustomWidget::setupTopSection(QWidget *parent)
|
|||
|
{
|
|||
|
//实例阴影shadow
|
|||
|
QGraphicsDropShadowEffect *shadow = new QGraphicsDropShadowEffect(this);
|
|||
|
//设置阴影距离
|
|||
|
shadow->setOffset(0, 0);
|
|||
|
//设置阴影颜色
|
|||
|
shadow->setColor(QColor(244,44,44));
|
|||
|
//设置阴影圆角
|
|||
|
shadow->setBlurRadius(16);
|
|||
|
|
|||
|
QLabel *label = new QLabel("顶部标签", parent);
|
|||
|
label->setAlignment(Qt::AlignCenter);
|
|||
|
label->setGraphicsEffect(shadow);
|
|||
|
|
|||
|
QVBoxLayout *layout = new QVBoxLayout(parent);
|
|||
|
layout->addWidget(label);
|
|||
|
}
|
|||
|
|
|||
|
void CustomWidget::setupMidSection(QWidget *parent)
|
|||
|
{
|
|||
|
//实例阴影shadow
|
|||
|
QGraphicsDropShadowEffect *shadow = new QGraphicsDropShadowEffect(this);
|
|||
|
//设置阴影距离
|
|||
|
shadow->setOffset(0, 0);
|
|||
|
//设置阴影颜色
|
|||
|
shadow->setColor(QColor(244,44,44));
|
|||
|
//设置阴影圆角
|
|||
|
shadow->setBlurRadius(16);
|
|||
|
|
|||
|
QVBoxLayout *layout = new QVBoxLayout(parent);
|
|||
|
QTextEdit *textEdit1 = new QTextEdit();
|
|||
|
QTextEdit *textEdit2 = new QTextEdit();
|
|||
|
layout->addWidget(textEdit1, 1); // 各占中间区域的一半高度
|
|||
|
layout->addWidget(textEdit2, 1);
|
|||
|
}
|
|||
|
|
|||
|
void CustomWidget::setupBottomSection(QWidget *parent)
|
|||
|
{
|
|||
|
//实例阴影shadow
|
|||
|
QGraphicsDropShadowEffect *shadow = new QGraphicsDropShadowEffect(this);
|
|||
|
//设置阴影距离
|
|||
|
shadow->setOffset(0, 0);
|
|||
|
//设置阴影颜色
|
|||
|
shadow->setColor(QColor(244,44,44));
|
|||
|
//设置阴影圆角
|
|||
|
shadow->setBlurRadius(16);
|
|||
|
|
|||
|
QTableWidget *table = new QTableWidget(5, 2, parent); // 5行2列
|
|||
|
table->setHorizontalHeaderLabels({"列1", "列2"});
|
|||
|
table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); // 列宽自适应
|
|||
|
table->setGraphicsEffect(shadow);
|
|||
|
QVBoxLayout *layout = new QVBoxLayout(parent);
|
|||
|
layout->addWidget(table);
|
|||
|
}
|