Qt5 学习之路及嵌入式开发教程15:Qt5主窗口---编辑菜单栏
这次任务要完成Qt5主窗口的界面设计第二部分:编辑及子菜单:复制、剪切、粘贴、撤销键入、重复键入及快捷方式功能实现
1、属性及图标:
复制:
剪切:
粘贴:
撤销键入:
重复键入:
快捷方式直接拖曳到工具栏就行了。
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());
}
运行:
扩展:查找功能
步骤:
头文件:
建立变量和槽函数
private:
QLineEdit *findLineEdit;
QDialog *findDlg;
private slots:
void showFindText(); //查找功能
void openFind(); //打开查找窗口
初始化:
/**************查找功能控件初始化******************/
findDlg = new QDialog(this);
findDlg->setWindowTitle(tr("查找"));
findLineEdit = new QLineEdit(findDlg);
QPushButton *btm= new QPushButton(tr("下一个"), findDlg);
QVBoxLayout *layou= new QVBoxLayout(findDlg);
layou->addWidget(findLineEdit);
layou->addWidget(btm);
connect(btm, &QPushButton::clicked, this, &MainWindow::showFindText);
查找功能:
/**********************查找功能*************************************/
void MainWindow::showFindText()
{
QString str = findLineEdit->text();
if (ui->textEdit->find(str, QTextDocument::FindCaseSensitively))
{
QPalette palette = ui->textEdit->palette();
palette.setColor(QPalette::Highlight,palette.color(QPalette::Active,QPalette::Highlight));
ui->textEdit->setPalette(palette);
}
else {
ui->textEdit->moveCursor(QTextCursor::End);
ui->textEdit->find(str,QTextDocument::FindCaseSensitively);
QMessageBox::warning(this, tr("查找"),tr("找不到%1").arg(str));
}
}
运行结果: