ElaContentDialog 组件文档
概述
ElaContentDialog 是一个现代化的内容对话框组件,继承自 QDialog。它提供了一个带有遮罩层、动画效果和三个按钮的模态对话框。
特性
- 遮罩层效果
- 显示/隐藏动画
- 三按钮布局
- 自定义内容区域
- 主题适配
- 无边框设计
- Windows 原生事件处理
- 模态对话框
公共方法
按钮文本设置
cpp
// 设置左侧按钮文本
void setLeftButtonText(QString text);
// 设置中间按钮文本
void setMiddleButtonText(QString text);
// 设置右侧按钮文本
void setRightButtonText(QString text);内容设置
cpp
// 设置中心内容组件
void setCentralWidget(QWidget* centralWidget);信号
buttonClicked 系列
cpp
// 左侧按钮点击信号
void leftButtonClicked();
// 中间按钮点击信号
void middleButtonClicked();
// 右侧按钮点击信号
void rightButtonClicked();尺寸规格
- 默认宽度: 400px
- 按钮高度: 38px
- 按钮圆角: 6px
- 内容边距: 15px(左右), 25px(上), 10px(下)
- 按钮区域高度: 60px
- 遮罩层边距: 8px
使用示例
基础用法
1. 创建确认对话框
cpp
// 创建对话框
ElaContentDialog* dialog = new ElaContentDialog(this);
// 设置按钮文本
dialog->setLeftButtonText(tr("取消"));
dialog->setMiddleButtonText(tr("最小化"));
dialog->setRightButtonText(tr("确定"));
// 显示对话框
dialog->exec();2. 自定义内容
cpp
// 创建内容组件
QWidget* content = new QWidget;
QVBoxLayout* layout = new QVBoxLayout(content);
// 添加标题
ElaText* title = new ElaText("提示", content);
title->setTextStyle(ElaTextType::Title);
// 添加描述
ElaText* description = new ElaText("确定要执行此操作吗?", content);
description->setTextStyle(ElaTextType::Body);
layout->addWidget(title);
layout->addSpacing(2);
layout->addWidget(description);
layout->addStretch();
// 设置到对话框
dialog->setCentralWidget(content);高级用法
1. 退出确认对话框
cpp
class MainWindow : public QMainWindow {
private:
ElaContentDialog* _closeDialog;
void setupCloseDialog() {
_closeDialog = new ElaContentDialog(this);
// 连接按钮信号
connect(_closeDialog,
&ElaContentDialog::rightButtonClicked,
this, &MainWindow::close);
connect(_closeDialog,
&ElaContentDialog::middleButtonClicked,
this, &MainWindow::showMinimized);
// 拦截关闭事件
connect(this, &MainWindow::closeButtonClicked,
_closeDialog, &ElaContentDialog::exec);
}
};2. 自定义动画效果
cpp
class CustomContentDialog : public ElaContentDialog {
protected:
void showEvent(QShowEvent* event) override {
// 自定义显示动画
QPropertyAnimation* animation =
new QPropertyAnimation(this, "windowOpacity");
animation->setDuration(300);
animation->setStartValue(0.0);
animation->setEndValue(1.0);
animation->start(QAbstractAnimation::DeleteWhenStopped);
ElaContentDialog::showEvent(event);
}
};注意事项
- 默认为模态对话框
- 按钮区域使用圆角设计
- 支持 Windows 原生窗口事件
- 遮罩层自动适应父窗口大小
- 右侧按钮使用主题强调色
- 主题切换会自动更新样式
- 按钮点击自动关闭对话框
- 支持自定义内容组件
相关组件
- ElaMaskWidget: 遮罩层组件
- ElaPushButton: 按钮组件
- ElaText: 文本组件
- ElaTheme: 主题管理器