段落功能

shixinglin
石兴霖 4 months ago
parent 0453e9347f
commit 053ce7c849

@ -817,6 +817,15 @@ class WordStyleMainWindow(QMainWindow):
self.ribbon.underline_btn.clicked.connect(self.on_underline_clicked)
self.ribbon.color_btn.clicked.connect(self.on_color_clicked)
# 段落对齐按钮信号
if hasattr(self.ribbon, 'align_left_btn'):
self.ribbon.align_left_btn.clicked.connect(self.on_align_left_clicked)
self.ribbon.align_center_btn.clicked.connect(self.on_align_center_clicked)
self.ribbon.align_right_btn.clicked.connect(self.on_align_right_clicked)
self.ribbon.align_justify_btn.clicked.connect(self.on_align_justify_clicked)
# 连接文本光标位置变化信号,实时更新对齐按钮状态
self.text_edit.cursorPositionChanged.connect(self.on_cursor_position_changed)
# 查找和替换按钮信号
if hasattr(self.ribbon, 'find_btn'):
self.ribbon.find_btn.clicked.connect(self.show_find_dialog)
@ -1282,6 +1291,105 @@ class WordStyleMainWindow(QMainWindow):
if cursor.hasSelection():
self.status_bar.showMessage("字体颜色已设置,新输入的文本将使用该颜色", 2000)
def on_align_left_clicked(self, checked):
"""左对齐按钮点击处理"""
if checked:
self.set_paragraph_alignment(Qt.AlignLeft)
self.update_alignment_buttons('left')
self.status_bar.showMessage("段落已设置为左对齐", 2000)
else:
# 如果取消选中,重新选中(确保始终有一个按钮被选中)
self.ribbon.align_left_btn.setChecked(True)
def on_align_center_clicked(self, checked):
"""居中对齐按钮点击处理"""
if checked:
self.set_paragraph_alignment(Qt.AlignCenter)
self.update_alignment_buttons('center')
self.status_bar.showMessage("段落已设置为居中对齐", 2000)
else:
# 如果取消选中,重新选中(确保始终有一个按钮被选中)
self.ribbon.align_center_btn.setChecked(True)
def on_align_right_clicked(self, checked):
"""右对齐按钮点击处理"""
if checked:
self.set_paragraph_alignment(Qt.AlignRight)
self.update_alignment_buttons('right')
self.status_bar.showMessage("段落已设置为右对齐", 2000)
else:
# 如果取消选中,重新选中(确保始终有一个按钮被选中)
self.ribbon.align_right_btn.setChecked(True)
def on_align_justify_clicked(self, checked):
"""两端对齐按钮点击处理"""
if checked:
self.set_paragraph_alignment(Qt.AlignJustify)
self.update_alignment_buttons('justify')
self.status_bar.showMessage("段落已设置为两端对齐", 2000)
else:
# 如果取消选中,重新选中(确保始终有一个按钮被选中)
self.ribbon.align_justify_btn.setChecked(True)
def set_paragraph_alignment(self, alignment):
"""设置段落对齐方式"""
cursor = self.text_edit.textCursor()
if cursor.hasSelection():
# 如果有选中文本,设置选中文本的对齐方式
block_format = cursor.blockFormat()
block_format.setAlignment(alignment)
cursor.setBlockFormat(block_format)
else:
# 如果没有选中文本,设置当前段落的对齐方式
cursor.select(QTextCursor.BlockUnderCursor)
block_format = cursor.blockFormat()
block_format.setAlignment(alignment)
cursor.setBlockFormat(block_format)
def update_alignment_buttons(self, active_alignment):
"""更新对齐按钮的选中状态"""
if not hasattr(self.ribbon, 'align_left_btn'):
return
# 重置所有对齐按钮的状态
self.ribbon.align_left_btn.setChecked(False)
self.ribbon.align_center_btn.setChecked(False)
self.ribbon.align_right_btn.setChecked(False)
self.ribbon.align_justify_btn.setChecked(False)
# 设置当前活动的对齐按钮
if active_alignment == 'left':
self.ribbon.align_left_btn.setChecked(True)
elif active_alignment == 'center':
self.ribbon.align_center_btn.setChecked(True)
elif active_alignment == 'right':
self.ribbon.align_right_btn.setChecked(True)
elif active_alignment == 'justify':
self.ribbon.align_justify_btn.setChecked(True)
def get_current_alignment(self):
"""获取当前段落的对齐方式"""
cursor = self.text_edit.textCursor()
block_format = cursor.blockFormat()
alignment = block_format.alignment()
if alignment == Qt.AlignLeft:
return 'left'
elif alignment == Qt.AlignCenter:
return 'center'
elif alignment == Qt.AlignRight:
return 'right'
elif alignment == Qt.AlignJustify:
return 'justify'
else:
return 'left' # 默认返回左对齐
def on_cursor_position_changed(self):
"""文本光标位置变化处理 - 更新对齐按钮状态"""
current_alignment = self.get_current_alignment()
self.update_alignment_buttons(current_alignment)
def update_weather_display(self, weather_data):
"""更新天气显示"""
if 'error' in weather_data:

Loading…
Cancel
Save