Qt5 学习之路及嵌入式开发教程15:Qt5主窗口—编辑菜单栏
本文将详细介绍 Qt5 主窗口的界面设计第二部分:编辑及子菜单的实现,包括复制、剪切、粘贴、撤销键入、重复键入及快捷方式功能的实现。
1. 属性及图标
在 Qt5 中,我们可以使用 QAction 来创建菜单栏中的各个菜单项。每个菜单项都可以设置其图标和属性。在这里,我们将创建五个菜单项:复制、剪切、粘贴、撤销键入和重复键入。
* 复制:设置图标为“复制”的图标,属性为“复制”。
* 剪切:设置图标为“剪切”的图标,属性为“剪切”。
* 粘贴:设置图标为“粘贴”的图标,属性为“粘贴”。
* 撤销键入:设置图标为“撤销键入”的图标,属性为“撤销键入”。
* 重复键入:设置图标为“重复键入”的图标,属性为“重复键入”。
2. 各部分功能实现
在mainwindow.cpp中,我们需要添加代码来实现各个菜单项的功能。
* 复制:connect(ui->copyAction, SIGNAL(triggered(bool)), ui->textEdit, SLOT(copy()));
* 剪切:connect(ui->cutAction, SIGNAL(triggered(bool)), ui->textEdit, SLOT(cut()));
* 粘贴:connect(ui->pasteAction, SIGNAL(triggered(bool)), ui->textEdit, SLOT(paste()));
* 撤销键入:connect(ui->undoAction, SIGNAL(triggered(bool)), ui->textEdit, SLOT(undo()));
* 重复键入:connect(ui->redoAction, SIGNAL(triggered(bool)), ui->textEdit, SLOT(redo()));
3. 智能化界面
为了使界面和程序功能更加智能一点,我们需要使“复制”、“剪切”、“粘贴”的enabled属性随文本框内文字的选择状态变化而变化。
在主窗体上选择文本编辑框textEdit,右键菜单找到“转到槽”对话框。对话框里列出了QTextEdit的所有信号,有可以利用的信号。我们可以使用copyAvailable(bool)信号来实现智能化界面。
void MainWindow::on_textEdit_copyAvailable(bool b)
{
ui->copyAction->setEnabled(b);
ui->cutAction->setEnabled(b);
ui->pasteAction->setEnabled(ui->textEdit->canPaste());
}
这样,当用户选择文本框内的文字时,“复制”、“剪切”、“粘贴”菜单项的enabled属性将随着选择状态的变化而变化。
本文介绍了 Qt5 主窗口的界面设计第二部分:编辑及子菜单的实现,包括复制、剪切、粘贴、撤销键入、重复键入及快捷方式功能的实现,并且使界面和程序功能更加智能一点。