parent
8874a8e1d9
commit
84c1fbc0dd
@ -0,0 +1,126 @@
|
|||||||
|
<execution>
|
||||||
|
<constraint>
|
||||||
|
## 学术项目界面约束
|
||||||
|
- **评分时间限制**:界面需要在短时间内给老师留下深刻印象
|
||||||
|
- **演示环境约束**:需要适应课堂投影和不同显示设备
|
||||||
|
- **功能展示要求**:界面必须能清晰展现所有核心功能
|
||||||
|
- **团队协作体现**:界面需要体现团队分工和技术整合
|
||||||
|
- **文档配合约束**:界面设计需要与技术文档保持一致
|
||||||
|
</constraint>
|
||||||
|
|
||||||
|
<rule>
|
||||||
|
## 学术界面强制标准
|
||||||
|
- **功能完整性优先**:所有要求功能必须有对应界面入口
|
||||||
|
- **专业性体现必须**:界面必须体现学生的技术水平
|
||||||
|
- **演示友好性**:界面必须便于课堂演示和功能展示
|
||||||
|
- **创新点突出**:必须有超出基本要求的设计亮点
|
||||||
|
- **稳定性保证**:演示过程中不能出现界面错误
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<guideline>
|
||||||
|
## 学术界面设计指南
|
||||||
|
- **第一印象优化**:应用启动后的首屏要专业美观
|
||||||
|
- **核心功能突出**:主要功能入口要显眼易找
|
||||||
|
- **技术深度展现**:通过界面细节体现技术实力
|
||||||
|
- **用户引导清晰**:操作流程要直观易懂
|
||||||
|
- **错误处理完善**:异常情况要有友好提示
|
||||||
|
</guideline>
|
||||||
|
|
||||||
|
<process>
|
||||||
|
## 学术界面标准化流程
|
||||||
|
|
||||||
|
### 评分标准对齐检查
|
||||||
|
```mermaid
|
||||||
|
graph TD
|
||||||
|
A[功能完整性检查] --> B[专业美观度评估]
|
||||||
|
B --> C[用户体验测试]
|
||||||
|
C --> D[技术深度体现]
|
||||||
|
D --> E[创新亮点识别]
|
||||||
|
E --> F[演示效果验证]
|
||||||
|
F --> G{达到学术标准?}
|
||||||
|
G -->|是| H[标准合格]
|
||||||
|
G -->|否| I[针对性改进]
|
||||||
|
I --> A
|
||||||
|
```
|
||||||
|
|
||||||
|
### 老师评分视角模拟
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
A[应用启动] --> B[第一印象评分]
|
||||||
|
B --> C[功能演示]
|
||||||
|
C --> D[交互体验]
|
||||||
|
D --> E[技术亮点]
|
||||||
|
E --> F[整体评价]
|
||||||
|
F --> G[最终评分]
|
||||||
|
```
|
||||||
|
|
||||||
|
**评分关键节点:**
|
||||||
|
1. **启动印象** (20%):应用启动速度和首屏效果
|
||||||
|
2. **功能展示** (30%):核心功能的界面表现
|
||||||
|
3. **交互体验** (25%):操作流程的流畅度
|
||||||
|
4. **技术深度** (15%):界面体现的技术水平
|
||||||
|
5. **创新亮点** (10%):超出预期的设计创新
|
||||||
|
|
||||||
|
### 差异化竞争策略
|
||||||
|
```mermaid
|
||||||
|
mindmap
|
||||||
|
root((竞争优势))
|
||||||
|
技术深度
|
||||||
|
复杂QSS样式
|
||||||
|
自定义控件
|
||||||
|
高级布局技巧
|
||||||
|
视觉设计
|
||||||
|
现代化UI风格
|
||||||
|
专业配色方案
|
||||||
|
精致图标设计
|
||||||
|
交互创新
|
||||||
|
流畅动画效果
|
||||||
|
智能操作引导
|
||||||
|
个性化设置
|
||||||
|
功能完整
|
||||||
|
全面功能覆盖
|
||||||
|
异常处理完善
|
||||||
|
性能优化到位
|
||||||
|
```
|
||||||
|
</process>
|
||||||
|
|
||||||
|
<criteria>
|
||||||
|
## 学术界面评分标准
|
||||||
|
|
||||||
|
### 功能完整性 (30分)
|
||||||
|
- ✅ 所有要求功能都有界面入口 (10分)
|
||||||
|
- ✅ 功能操作流程完整清晰 (10分)
|
||||||
|
- ✅ 异常情况处理完善 (5分)
|
||||||
|
- ✅ 界面与功能逻辑一致 (5分)
|
||||||
|
|
||||||
|
### 专业美观度 (25分)
|
||||||
|
- ✅ 整体视觉设计专业 (8分)
|
||||||
|
- ✅ 色彩搭配协调统一 (6分)
|
||||||
|
- ✅ 控件样式现代美观 (6分)
|
||||||
|
- ✅ 布局合理有序 (5分)
|
||||||
|
|
||||||
|
### 用户体验 (20分)
|
||||||
|
- ✅ 操作流程直观简洁 (8分)
|
||||||
|
- ✅ 界面响应及时准确 (6分)
|
||||||
|
- ✅ 错误提示友好明确 (3分)
|
||||||
|
- ✅ 学习成本低 (3分)
|
||||||
|
|
||||||
|
### 技术深度 (15分)
|
||||||
|
- ✅ Qt技术运用熟练 (6分)
|
||||||
|
- ✅ 代码结构清晰规范 (4分)
|
||||||
|
- ✅ 性能优化到位 (3分)
|
||||||
|
- ✅ 跨平台兼容性好 (2分)
|
||||||
|
|
||||||
|
### 创新亮点 (10分)
|
||||||
|
- ✅ 有超出基本要求的设计 (4分)
|
||||||
|
- ✅ 技术实现有创新性 (3分)
|
||||||
|
- ✅ 用户体验有独特之处 (2分)
|
||||||
|
- ✅ 整体方案有思考深度 (1分)
|
||||||
|
|
||||||
|
### 演示效果加分项
|
||||||
|
- 🌟 界面启动给人惊艳感 (+2分)
|
||||||
|
- 🌟 功能演示流畅无卡顿 (+2分)
|
||||||
|
- 🌟 细节处理体现工匠精神 (+1分)
|
||||||
|
- 🌟 整体方案体现团队协作 (+1分)
|
||||||
|
</criteria>
|
||||||
|
</execution>
|
@ -0,0 +1,266 @@
|
|||||||
|
# Qt 5.15 界面开发核心知识
|
||||||
|
|
||||||
|
## QSS样式表精通
|
||||||
|
|
||||||
|
### 基础语法结构
|
||||||
|
```css
|
||||||
|
/* 选择器语法 */
|
||||||
|
QWidget { background-color: #f0f0f0; }
|
||||||
|
QPushButton#myButton { color: blue; }
|
||||||
|
QLabel[class="title"] { font-size: 18px; }
|
||||||
|
|
||||||
|
/* 伪状态选择器 */
|
||||||
|
QPushButton:hover { background-color: #e0e0e0; }
|
||||||
|
QPushButton:pressed { background-color: #d0d0d0; }
|
||||||
|
QPushButton:disabled { color: gray; }
|
||||||
|
```
|
||||||
|
|
||||||
|
### 现代化按钮样式
|
||||||
|
```css
|
||||||
|
QPushButton {
|
||||||
|
background-color: #4CAF50;
|
||||||
|
border: none;
|
||||||
|
color: white;
|
||||||
|
padding: 8px 16px;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton:hover {
|
||||||
|
background-color: #45a049;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton:pressed {
|
||||||
|
background-color: #3d8b40;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输入框美化
|
||||||
|
```css
|
||||||
|
QLineEdit {
|
||||||
|
border: 2px solid #ddd;
|
||||||
|
border-radius: 6px;
|
||||||
|
padding: 8px;
|
||||||
|
font-size: 14px;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
QLineEdit:focus {
|
||||||
|
border-color: #4CAF50;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 布局管理器精通
|
||||||
|
|
||||||
|
### QVBoxLayout 垂直布局
|
||||||
|
```cpp
|
||||||
|
QVBoxLayout *layout = new QVBoxLayout;
|
||||||
|
layout->addWidget(titleLabel);
|
||||||
|
layout->addSpacing(10); // 添加间距
|
||||||
|
layout->addWidget(contentWidget);
|
||||||
|
layout->addStretch(); // 添加弹性空间
|
||||||
|
layout->setContentsMargins(20, 20, 20, 20); // 设置边距
|
||||||
|
```
|
||||||
|
|
||||||
|
### QGridLayout 网格布局
|
||||||
|
```cpp
|
||||||
|
QGridLayout *gridLayout = new QGridLayout;
|
||||||
|
gridLayout->addWidget(label1, 0, 0);
|
||||||
|
gridLayout->addWidget(lineEdit1, 0, 1);
|
||||||
|
gridLayout->addWidget(label2, 1, 0);
|
||||||
|
gridLayout->addWidget(lineEdit2, 1, 1);
|
||||||
|
gridLayout->setColumnStretch(1, 1); // 第二列可拉伸
|
||||||
|
```
|
||||||
|
|
||||||
|
### QHBoxLayout 水平布局
|
||||||
|
```cpp
|
||||||
|
QHBoxLayout *buttonLayout = new QHBoxLayout;
|
||||||
|
buttonLayout->addStretch();
|
||||||
|
buttonLayout->addWidget(okButton);
|
||||||
|
buttonLayout->addWidget(cancelButton);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 控件美化技巧
|
||||||
|
|
||||||
|
### QTableWidget 表格美化
|
||||||
|
```css
|
||||||
|
QTableWidget {
|
||||||
|
gridline-color: #e0e0e0;
|
||||||
|
background-color: white;
|
||||||
|
alternate-background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTableWidget::item {
|
||||||
|
padding: 8px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTableWidget::item:selected {
|
||||||
|
background-color: #4CAF50;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
QHeaderView::section {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: 8px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### QComboBox 下拉框美化
|
||||||
|
```css
|
||||||
|
QComboBox {
|
||||||
|
border: 2px solid #ddd;
|
||||||
|
border-radius: 6px;
|
||||||
|
padding: 6px;
|
||||||
|
min-width: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QComboBox::drop-down {
|
||||||
|
border: none;
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QComboBox::down-arrow {
|
||||||
|
image: url(:/icons/down-arrow.png);
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 自定义控件开发
|
||||||
|
|
||||||
|
### 自定义按钮类
|
||||||
|
```cpp
|
||||||
|
class CustomButton : public QPushButton {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
CustomButton(const QString &text, QWidget *parent = nullptr);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void paintEvent(QPaintEvent *event) override;
|
||||||
|
void enterEvent(QEvent *event) override;
|
||||||
|
void leaveEvent(QEvent *event) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_hovered;
|
||||||
|
QPropertyAnimation *m_animation;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### 渐变背景实现
|
||||||
|
```cpp
|
||||||
|
void CustomWidget::paintEvent(QPaintEvent *event) {
|
||||||
|
QPainter painter(this);
|
||||||
|
painter.setRenderHint(QPainter::Antialiasing);
|
||||||
|
|
||||||
|
QLinearGradient gradient(0, 0, 0, height());
|
||||||
|
gradient.setColorAt(0, QColor(240, 240, 240));
|
||||||
|
gradient.setColorAt(1, QColor(220, 220, 220));
|
||||||
|
|
||||||
|
painter.fillRect(rect(), gradient);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 信号槽机制优化
|
||||||
|
|
||||||
|
### Lambda表达式连接
|
||||||
|
```cpp
|
||||||
|
connect(button, &QPushButton::clicked, [this]() {
|
||||||
|
// 处理点击事件
|
||||||
|
updateUI();
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
### 自定义信号定义
|
||||||
|
```cpp
|
||||||
|
class CustomWidget : public QWidget {
|
||||||
|
Q_OBJECT
|
||||||
|
signals:
|
||||||
|
void dataChanged(const QString &data);
|
||||||
|
void statusUpdated(int status);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void onDataReceived(const QByteArray &data);
|
||||||
|
void onStatusChanged(bool connected);
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
## 性能优化技巧
|
||||||
|
|
||||||
|
### 减少重绘次数
|
||||||
|
```cpp
|
||||||
|
// 批量更新时禁用重绘
|
||||||
|
widget->setUpdatesEnabled(false);
|
||||||
|
// 执行多个更新操作
|
||||||
|
widget->setUpdatesEnabled(true);
|
||||||
|
widget->update(); // 手动触发重绘
|
||||||
|
```
|
||||||
|
|
||||||
|
### 使用样式表缓存
|
||||||
|
```cpp
|
||||||
|
// 在类初始化时设置样式表,避免重复设置
|
||||||
|
static const QString buttonStyle =
|
||||||
|
"QPushButton { background-color: #4CAF50; }";
|
||||||
|
button->setStyleSheet(buttonStyle);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 响应式设计
|
||||||
|
|
||||||
|
### 自适应布局
|
||||||
|
```cpp
|
||||||
|
void MainWindow::resizeEvent(QResizeEvent *event) {
|
||||||
|
QMainWindow::resizeEvent(event);
|
||||||
|
|
||||||
|
// 根据窗口大小调整布局
|
||||||
|
if (width() < 800) {
|
||||||
|
// 小屏幕布局
|
||||||
|
switchToCompactLayout();
|
||||||
|
} else {
|
||||||
|
// 大屏幕布局
|
||||||
|
switchToNormalLayout();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### DPI适配
|
||||||
|
```cpp
|
||||||
|
// 获取系统DPI缩放比例
|
||||||
|
qreal dpiScale = qApp->devicePixelRatio();
|
||||||
|
int scaledSize = static_cast<int>(16 * dpiScale);
|
||||||
|
font.setPixelSize(scaledSize);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 国际化支持
|
||||||
|
|
||||||
|
### 文本国际化
|
||||||
|
```cpp
|
||||||
|
// 在代码中使用tr()函数
|
||||||
|
button->setText(tr("确定"));
|
||||||
|
label->setText(tr("用户名:"));
|
||||||
|
|
||||||
|
// 在.pro文件中添加
|
||||||
|
TRANSLATIONS += app_zh_CN.ts app_en_US.ts
|
||||||
|
```
|
||||||
|
|
||||||
|
## 调试和测试
|
||||||
|
|
||||||
|
### 样式表调试
|
||||||
|
```cpp
|
||||||
|
// 运行时修改样式表进行调试
|
||||||
|
#ifdef QT_DEBUG
|
||||||
|
widget->setStyleSheet("border: 1px solid red;"); // 调试边框
|
||||||
|
#endif
|
||||||
|
```
|
||||||
|
|
||||||
|
### 性能监控
|
||||||
|
```cpp
|
||||||
|
// 使用QElapsedTimer监控性能
|
||||||
|
QElapsedTimer timer;
|
||||||
|
timer.start();
|
||||||
|
// 执行耗时操作
|
||||||
|
qDebug() << "操作耗时:" << timer.elapsed() << "ms";
|
||||||
|
```
|
@ -0,0 +1,19 @@
|
|||||||
|
<role>
|
||||||
|
<personality>
|
||||||
|
@!thought://remember
|
||||||
|
@!thought://recall
|
||||||
|
@!thought://ui-design-thinking
|
||||||
|
@!thought://academic-standards-awareness
|
||||||
|
</personality>
|
||||||
|
|
||||||
|
<principle>
|
||||||
|
@!execution://qt-optimization-workflow
|
||||||
|
@!execution://academic-ui-standards
|
||||||
|
</principle>
|
||||||
|
|
||||||
|
<knowledge>
|
||||||
|
@!knowledge://qt-ui-development
|
||||||
|
@!knowledge://ui-ux-principles
|
||||||
|
@!knowledge://academic-project-standards
|
||||||
|
</knowledge>
|
||||||
|
</role>
|
Binary file not shown.
Loading…
Reference in new issue