Qt配置系统之新建工程功能

Qt网关配置系统之新建工程功能

1.前言

前段时间做毕业设计需要做一个工程管理的功能,该功能包含新建工程,打开工程,保存工程和工程另存为。本文将对工程管理中的新建工程做一个记录。希望此文章对各位有所帮助。

2.开发环境

开发工具:Qt Creator5.14.2;
操作系统:Windows10;
编译方式:Mingw编译。

3.UI界面设计

双击mainwindow.ui文件,在菜单栏的文件下添加几个action选项,如下图所示。添加打开工程和新建工程,然后添加一个分隔符,接着添加保存和另存为选项。
在这里插入图片描述

4.新建工程

在mainwindow.h文件中声明槽函数,如下图所示:
在这里插入图片描述
用on_…_triggered()这样的方式来写槽函数后,就不再需要用connect来连接新建工程action的信号和点击执行的槽函数。函数名中间的省略号为该action的对象名称。这样写之后,当鼠标点击该action选项时,执行的就为对应的槽函数。

完成思路:
在void MainWindow::on_action_create_project_triggered()中实现时,先弹出问题框询问用户是否需要保存当前工程。因为新建工程确定后将会直接加载该工程到配置系统。如果选择保存选项就将当前工程进行保存,然后弹出新建工程对话框。如果选择不保存,直接弹出新建工程对话框。在该对话框中进行新工程的设置,设置完后点击确定。如果新工程创建成功将直接打开新建的工程,否则打开失败,关闭掉打开的工程文件。

询问是否保存对话框代码:

    //弹出询问对话框,如果点击确定就保存当前工程,如果点击no就不保存当前工程
    QMessageBox *msg=new QMessageBox(QMessageBox::Question,tr("请选择"),tr("是否保存当前工程?"),QMessageBox::Yes|QMessageBox::No);
    msg->setWindowIcon(QIcon(QT_NO_ICONV));
    msg->button(QMessageBox::Yes)->setText("保存");
    msg->button(QMessageBox::No)->setText("不保存");
    int ret=msg->exec();
    if(ret==QMessageBox::Yes)
    {
   
        //保存当前工程
        on_action_save_triggered();
    }

如果选择要保存就直接调用on_action_save_triggered()槽函数。

创建guicreateproject.ui文件,进行新建工程对话框的ui设计,如下图:
在这里插入图片描述
这里创建工程我只实现了新建空工程,后面的从模板创建的方式没有去实现。工程名字通过lineedit输入,工程路径通过…按钮进行选择。

    //创建新建工程对话框
    GUICreateProject *x = new GUICreateProject();
    x->exec();
    //成功新建工程
    if(x->config.is_config){
   
        QString sx= x->config.project_name;
        qDebug()<<sx;
        //新建工程时项目版本号设置为0,每保存一次项目,此版本加1
        //sysServiceManager_->sys_project_version=0;
        //如果新建工程成功,点击确定后,打开该工程
        //将当前工程文件路径修改为刚刚新建的工程文件路径
        G_Project_path=x->config.project_path;
        qDebug()<<"G_Project_path"<<G_Project_path;
        //打开工程文件,工程采用json数据格式进行存储
        QFile file_r(G_Project_path);
        if( file_r.open( QIODevice::ReadOnly | QIODevice::Text) )
        {
   
            QString jsonfile=file_r.readAll();
            file_r.close();
            QJsonParseError jsonParseError;
            QJsonDocument jsonDoc=QJsonDocument::fromJson(jsonfile.toUtf8(),&jsonParseError);
            if(!(jsonParseError.error==QJsonParseError::NoError))
            {
   
                QMessageBox::about(NULL,"提示","项目配置文件错误");
                return;
            }
            QJsonObject jsonObj=jsonDoc.object();
            //将获取的json对象赋给sysservicemanager对象
            SysServiceManager *sysServiceMana=new SysServiceManager();
            sysServiceMana->read(jsonObj,*sysServiceMana);
            *sysServiceManager_=*sysServiceMana;
            delete sysServiceMana;
            //设置co_channel_length,do_channel_length的值
            sysServiceManager_->coService_.co_channel_length=sysServiceManager_->coService_.channel_max_len;
            sysServiceManager_->doService_.do_channel_length=sysServiceManager_->doService_.channel_max_len;
            qDebug()<<"打开工程成功"
                   <<sysServiceManager_->coService_.co_channel_length
                  <<sysServiceManager_->doService_.do_channel_length;
            //窗口初始化
            windows_init();
            //设置窗口标题
            setWindowTitle(G_Project_path);
        }
        else {
   
            file_r.close();
            qDebug() <<G_Project_path + " open error!" ;
        }
    }

5.完整代码

5.1新建工程按钮槽函数

// 新建工程
void MainWindow::on_action_create_project_triggered()
{
   
    //弹出询问对话框,如果点击确定就保存当前工程,如果点击no就不保存当前工程
    QMessageBox *msg=new QMessageBox(QMessageBox::Question,tr("请选择"),tr("是否保存当前工程?"),QMessageBox::Yes|QMessageBox::No);
    msg->setWindowIcon(QIcon(QT_NO_ICONV));
    msg->button(QMessageBox::Yes)->setText("保存");
    msg-
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值