Qt学习项目多文档编辑器

一、开发环境

archlinux 更新到最新版
Qt 5.15.2+kde+r171-2
qt creator 4.14.2-1

二、项目实现

这个项目完全是 《Qt及Qt Quick开发实战精解》第一章的内容,主要记录一些编程过程中遇到的问题。除此之外,还学习qt自己的示例mdi项目。

1.界面设计

新建项目,基类选择QMainWindow。

(1) 添加资源文件

菜单的图标通过资源来保存。

(2) 逐一添加菜单项

我这里遇到一个问题,就是菜单中分割线显示不出来。但是将项目拷贝到windows的中进行打开,分割线是可以显示的,可能是新版本的bug。
在这里插入图片描述
设置图标的方法
在这里插入图片描述
创建一个工具栏,在MainWindow上右键添加工具栏
在这里插入图片描述
工具栏上的菜单就是直接从下面 Action Editor 中拖需要的菜单到工具栏就可以了。

2.创建子窗口类

添加一个类,参考书中代码编写即可。
有一个好用的快捷键:Alt + Enter
可直接在头文件函数声明的地方自动创建函数定义的框架,提高编码效率。除此之外,还可以在需要包含头文件的代码出,自动出现包含头文件的菜单。

3.实现菜单功能

大部分代码和书中相同,有一个地方不太一样:UpdateWindowMenu 这个函数用来在窗口菜单中选择并激活已经创建的文档。这里参考的就是示例程序中mdi项目中代码。

    for (int i = 0; i < windows.size(); ++i)
    {
        QMdiSubWindow *mdi_sub_window = windows.at(i);
        MdiChild *child = qobject_cast<MdiChild *>(mdi_sub_window->widget());
        QString text;

        if (i < 9)
        {
            text = tr("&%1 %2").arg(i + 1).arg(child->UserFriendlyCurrentFile());
        }
        else
        {
            text = tr("%1 %2").arg(i + 1).arg(child->UserFriendlyCurrentFile());
        }
        QAction *action = ui->menuWindow->addAction(text, mdi_sub_window, [mdi_sub_window, this]() {
            ui->mdiArea->setActiveSubWindow(mdi_sub_window);
        });
        action->setCheckable(true);
        action->setChecked(child == ActiveMdiChild());
    }

4.完善程序功能

这部分代码也是照书上编写就可以。

三、项目的源代码

链接: https://pan.baidu.com/s/1FgVd0OiGWwFipltW7W5IUA
提取码: p5v9

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值