Qt5 学习之路及嵌入式开发教程15:Qt5主窗口---编辑菜单栏

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));
    }

}

 运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值