C++编辑器-5
2026-02-15 14:30:43
发布于:浙江
该代码并不完整,点此进入代码框架页面
class FontDialog(QDialog):
"""字体设置对话框"""
def __init__(self, current_font_family="Courier New", current_font_size=10, parent=None):
super().__init__(parent)
self.setWindowTitle("字体设置")
self.setModal(True)
self.resize(400, 250)
layout = QVBoxLayout(self)
# 字体家族选择
font_family_label = QLabel("字体:")
layout.addWidget(font_family_label)
self.font_family_combo = QFontComboBox()
self.font_family_combo.setCurrentFont(QFont(current_font_family))
self.font_family_combo.setFontFilters(QFontComboBox.MonospacedFonts) # 只显示等宽字体
layout.addWidget(self.font_family_combo)
# 字体大小选择
font_size_label = QLabel("字体大小:")
layout.addWidget(font_size_label)
self.font_size_spin = QSpinBox()
self.font_size_spin.setRange(8, 24)
self.font_size_spin.setValue(current_font_size)
layout.addWidget(self.font_size_spin)
# 预览区域
preview_label = QLabel("预览:")
layout.addWidget(preview_label)
self.preview_text = QTextEdit()
self.preview_text.setReadOnly(True)
self.preview_text.setMaximumHeight(80)
self.preview_text.setText("#include <iostream>\n\nint main() {\n std::cout << \"Hello, C++!\" << std::endl;\n return 0;\n}")
layout.addWidget(self.preview_text)
# 连接信号,实时更新预览
self.font_family_combo.currentFontChanged.connect(self.update_preview)
self.font_size_spin.valueChanged.connect(self.update_preview)
# 初始预览
self.update_preview()
# 按钮布局
button_layout = QHBoxLayout()
button_layout.addStretch()
# 确定按钮
ok_button = QPushButton("确定")
ok_button.clicked.connect(self.accept)
button_layout.addWidget(ok_button)
# 取消按钮
cancel_button = QPushButton("取消")
cancel_button.clicked.connect(self.reject)
button_layout.addWidget(cancel_button)
layout.addLayout(button_layout)
def update_preview(self):
"""更新预览"""
font = QFont()
font.setFamily(self.font_family_combo.currentFont().family())
font.setPointSize(self.font_size_spin.value())
self.preview_text.setFont(font)
def get_font_settings(self):
"""获取字体设置"""
return self.font_family_combo.currentFont().family(), self.font_size_spin.value()
class IncludePathsDialog(QDialog):
"""Include路径配置对话框"""
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle("Include路径配置")
self.setModal(True)
self.resize(600, 400)
layout = QVBoxLayout(self)
# 说明标签
label = QLabel("C++ Include路径 (每行一个路径,将用于-I参数):")
layout.addWidget(label)
# 路径编辑框
self.paths_edit = QPlainTextEdit()
self.paths_edit.setFont(QFont("Courier New", 9))
layout.addWidget(self.paths_edit)
# 按钮布局
button_layout = QHBoxLayout()
# 添加按钮
add_button = QPushButton("添加路径")
add_button.clicked.connect(self.add_path)
button_layout.addWidget(add_button)
# 查找按钮
find_button = QPushButton("自动查找")
find_button.clicked.connect(self.auto_find_paths)
button_layout.addWidget(find_button)
# 测试按钮
test_button = QPushButton("测试路径")
test_button.clicked.connect(self.test_paths)
button_layout.addWidget(test_button)
button_layout.addStretch()
# 确定取消按钮
ok_button = QPushButton("确定")
ok_button.clicked.connect(self.accept)
cancel_button = QPushButton("取消")
cancel_button.clicked.connect(self.reject)
button_layout.addWidget(ok_button)
button_layout.addWidget(cancel_button)
layout.addLayout(button_layout)
def add_path(self):
"""添加路径"""
path = QFileDialog.getExistingDirectory(self, "选择Include路径")
if path:
current_text = self.paths_edit.toPlainText()
if current_text and not current_text.endswith('\n'):
self.paths_edit.appendPlainText("")
self.paths_edit.appendPlainText(path)
def auto_find_paths(self):
"""自动查找include路径"""
include_paths = self.parent().find_include_paths()
self.paths_edit.setPlainText("\n".join(include_paths))
QMessageBox.information(self, "自动查找", f"找到了 {len(include_paths)} 个include路径")
def test_paths(self):
"""测试路径是否存在"""
paths = self.paths_edit.toPlainText().strip().split('\n')
valid_paths = []
invalid_paths = []
for path in paths:
path = path.strip()
if path:
if os.path.exists(path):
valid_paths.append(path)
else:
invalid_paths.append(path)
message = ""
if valid_paths:
message += f"有效路径 ({len(valid_paths)} 个):\n" + "\n".join(valid_paths) + "\n\n"
if invalid_paths:
message += f"无效路径 ({len(invalid_paths)} 个):\n" + "\n".join(invalid_paths)
if message:
QMessageBox.information(self, "路径测试结果", message)
else:
QMessageBox.information(self, "路径测试结果", "没有找到路径")
这里空空如也





















有帮助,赞一个