开发笔记

今天原本计划完成三个功能的,其中有一个是难点问题,但结果却大出所望。分析如下:

一、之前对功能设计不是很完善,在解决较为麻烦的问题之后,发现后续还要做密码验证,颜色标记等问题,所以没有预估好工作量

二、自己在大的表单一列的不同对象间,交替使用QDoubleSpinBox与QSpinBox,且都是new的其对象,下一个表单使用时要把前一个QDoubleSpinBox或QSpinBox对象干掉,但是思路不严紧,对于其初始化的位置及最后一个干掉的位置没有多想,导致出了很多状况,严重的拉慢了进度。

三、以后还是不能抱侥幸心理,增强逻辑性与严紧性,这样提高效率与正确率,做到善始自终。

PS:虽然局部代码看不出个什么,但还是拿出来,

void XXX::spinboxint(int fv)
{
    QString strfv = QString::number(fv, 16);
    //判断map中是否已经有,如果有修改其值,如果没有插入
    if (fvmapcell.contains(fvcurrentrow))
    {
        fvmapcell[fvcurrentrow] = strfv;
    }
    else
    {
        fvmapcell.insert(fvcurrentrow,strfv);
    }
}

void XXX::spinboxdouble(double fvd)
{
    QString strfv = QString::number(fvd,‘f‘, 4);
    //判断map中是否已经有,如果有修改其值,如果没有插入
    if (fvmapcell.contains(fvcurrentrow))
    {
        fvmapcell[fvcurrentrow] = strfv;

    }
    else
    {
        fvmapcell.insert(fvcurrentrow,strfv);
    }

}
//如果spinbox_fv已经有过定义 就把之前的干掉
        if (spinbox_fv != NULL)
        {
            spinbox_fv->disconnect();
            delete spinbox_fv;
            spinbox_fv = NULL;
            //表单上显示修改结果
            QTableWidgetItem *itemfvi = new QTableWidgetItem(fvmapcell[lastfvtablerow]);
            itemfvi->setTextAlignment(Qt::AlignCenter);//字体居中显示
            itemfvi->setTextColor(QColor(255,0,0));
            uitablefixvalue.tableWidget->setItem(lastfvtablerow,lastfvtablecloum,itemfvi);
        }
        else if (spinbox_fvd !=NULL)
        {
            spinbox_fvd->disconnect();
            delete spinbox_fvd;
            spinbox_fvd = NULL;
            //表单上显示修改结果
            QTableWidgetItem *itemfvd = new QTableWidgetItem(fvmapcell[lastfvtablerow]);
            itemfvd->setTextAlignment(Qt::AlignCenter);//字体居中显示
            itemfvd->setTextColor(QColor(255,0,0));
            uitablefixvalue.tableWidget->setItem(lastfvtablerow,lastfvtablecloum,itemfvd);
        }

        //判断当前行是整数行还是浮点行
        if (typeItem.contains(chineseToString("整数")))
        {
            spinbox_fv = new QSpinBox(this);
            spinbox_fv->setRange(minItem.toInt(&ok,10),maxItem.toInt(&ok,10));
            spinbox_fv->setSingleStep(stepItem.toInt(&ok,10));
            uitablefixvalue.tableWidget->setCellWidget(fvrow,fvclounm,spinbox_fv);
            connect(spinbox_fv,SIGNAL(valueChanged(int)),this,SLOT(spinboxint(int)));
        }
        else if(typeItem.contains(chineseToString("浮点")))
        {
            spinbox_fvd = new QDoubleSpinBox(this);
            spinbox_fvd->setDecimals(4);
            spinbox_fvd->setRange(minItem.toDouble(&ok),maxItem.toDouble(&ok));
            spinbox_fvd->setSingleStep(stepItem.toDouble(&ok));
            uitablefixvalue.tableWidget->setCellWidget(fvrow,fvclounm,spinbox_fvd);
            connect(spinbox_fvd,SIGNAL(valueChanged(double)),this,SLOT(spinboxdouble(double)));
        }
        lastfvtablerow = fvrow;
        lastfvtablecloum = fvclounm;
void XXX::changeconstvalue()
{
    //最后 退出有一个错误是不是这个原因 ?
    if (spinbox_fv != NULL)
    {
        spinbox_fv->disconnect();
        delete spinbox_fv;
        spinbox_fv = NULL;
        //表单上显示修改结果
        QTableWidgetItem *itemfvi = new QTableWidgetItem(fvmapcell[lastfvtablerow]);
        itemfvi->setTextAlignment(Qt::AlignCenter);//字体居中显示
        itemfvi->setTextColor(QColor(255,0,0));
        uitablefixvalue.tableWidget->setItem(lastfvtablerow,lastfvtablecloum,itemfvi);
    }
    else if (spinbox_fvd !=NULL)
    {
        spinbox_fvd->disconnect();
        delete spinbox_fvd;
        spinbox_fvd = NULL;
        //表单上显示修改结果
        QTableWidgetItem *itemfvd = new QTableWidgetItem(fvmapcell[lastfvtablerow]);
        itemfvd->setTextAlignment(Qt::AlignCenter);//字体居中显示
        itemfvd->setTextColor(QColor(255,0,0));
        uitablefixvalue.tableWidget->setItem(lastfvtablerow,lastfvtablecloum,itemfvd);
    }

    //加一个密码认证
    fvconfirmWidget->show();

}

void XXX::fvconfirmyes()
{
    if(uifvconfirm.lineEdit->text().trimmed()== tr("admin") &&
        uifvconfirm.lineEdit_2->text().trimmed()==tr("admin"))
    {
        QMessageBox:: StandardButton rb = QMessageBox:: question(NULL,
            QStringLiteral("提示"), QStringLiteral("确定修改定值?"), QMessageBox:: Yes
            |  QMessageBox:: No, QMessageBox:: Yes) ;
        if(rb == QMessageBox:: Yes)
        {
            fvconfirmWidget->close();
            //下发修改定值命令
            QMap<int ,QString>::const_iterator i;
            for(i = fvmapcell.constBegin(); i != fvmapcell.constEnd();i++)
            {
                //使用时先判断test1不为空且与当前定值值不同才会下发
                QString test1=i.value();
                int test2 = i.key();
            }
            //下发完清空map数据
            QMap<int ,QString>::iterator ic;
            ic = fvmapcell.begin();
            int num = fvmapcell.size()-1;
            while (num>0)
            {
                fvmapcell.erase(ic+num);
                num--;
            }
            fvmapcell[0]="";
            //刷新界面
            showconstvalue();
        }
        uifvconfirm.lineEdit->clear();
        uifvconfirm.lineEdit_2->clear();
    }
    else
    {
        QMessageBox::warning(this,QStringLiteral("警告"),QStringLiteral("用户名或密码错误!"),QMessageBox::Yes);
        uifvconfirm.lineEdit->clear();
        uifvconfirm.lineEdit_2->clear();
        uifvconfirm.lineEdit->setFocus();
    }
}

void monizhuzhan::fvconfirmcancel()
{
    fvconfirmWidget->close();
}
时间: 2024-10-12 21:22:38

开发笔记的相关文章

张高兴的 Windows 10 IoT 开发笔记:RTC 时钟模块 DS3231

原文:张高兴的 Windows 10 IoT 开发笔记:RTC 时钟模块 DS3231 GitHub:https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/DS3231 注意:不包含闹钟设置

Android开发笔记(一百零三)地图与定位SDK

集成地图SDK 国内常用的地图SDK就是百度和高德了,二者的用法大同小异,可按照官网上的开发指南一步步来.下面是我在集成地图SDK时遇到的问题说明: 1.点击基本地图功能选项,不能打开地图,弹出"key验证出错!请在AndroidManifest.xml文件中检查key设置的"的红色字提示.查看日志提示"galaxy lib host missing meta-data,make sure you know the right way to integrate galaxy&

微信订阅号开发笔记(二)

微信开发的流程其实很简单 o(∩_∩)o 哈哈!在微信网站的编辑操作 额,就不说了.虽然有人问过.下面是我的微信开发过程,简单记录下. 成为开发者 材料:1.自己的服务器资源,百度的BAE,新浪的SAE都不错. 2.懂那么点编程语言. 3.注册微信公众号. 上面的都有了之后,就可以自己动手开发了.哇咔咔,好兴奋.有木有. 在登录进去之后,怎么成为开发者?不知道,自己看去. 开始coding吧. 1.验证 if (! empty ( $_GET ['echostr'] ) && ! empt

微信订阅号开发笔记(三)

1.接收语音识别结果 if($msgType=="voice"){ //收到语音消息 //MediaId 语音消息媒体id,可以调用多媒体文件下载接口拉取数据. //Format 语音格式,如amr,speex等 $format = $postObj->Format; $mediaId = $postObj->MediaId; //开通语音识别功能,用户每次发送语音给公众号时,微信会在推送的语音消息XML数据包中,增加一个Recongnition字段. //注:由于客户端缓

微信订阅号开发笔记(四)

1.创建菜单 //创建菜单 public function createMenu(){ $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token="; $url.=$this->getacctoken(); //目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单.一级菜单最多4个汉字, //二级菜单最多7个汉字,多出来的部分将会以"..."代替.请注意,创建自定义菜单

Swift开发笔记

Swift开发笔记(一) 刚开始接触XCode时,整个操作逻辑与Android Studio.Visual Studio等是完全不同的,因此本文围绕IOS中控件的设置.事件的注册来简单的了解IOS开发 1.新建一个Xcode项目,项目目录大致如图: 2.在Main.storyboard添加控件 首先要显示右侧的工具栏(Utilities),之后选择显示Object Library,就可以找到常用的一些控件了,然后添加几个控件到界面中 3.将控件和ViewController进行关联 此时要将Ed

张高兴的 Xamarin.Forms 开发笔记:为 Android 与 iOS 引入 UWP 风格的汉堡菜单 ( MasterDetailPage )

所谓 UWP 样式的汉堡菜单,我曾在"张高兴的 UWP 开发笔记:汉堡菜单进阶"里说过,也就是使用 Segoe MDL2 Assets 字体作为左侧 Icon,并且左侧使用填充颜色的矩形用来表示 ListView 的选中.如下图 但怎样通过 Xamarin.Forms ,将这一样式的汉堡菜单带入到 Android 与 iOS 中呢? 一.大纲-细节模式简介 讲代码前首先来说说这种导航模式,官方称"大纲-细节模式"(MasterDetail).左侧的汉堡菜单称为&qu

web前端开发笔记(2)

web前端开发笔记(1) 一.HTML标签书写有哪些规范? 页面编码. 文档声明. 关键字与描述. 行内元素不能包含块级元素. a标签不能嵌套a标签. 标签名和属性必须用小写字母书写,属性必须加引号,标签必须闭合,单标签页必须闭合. 页面中不要用 进行缩进,如需缩进,用css控制. html标签使用必须语义化. 要为img标签填写alt和title属性. 二.HTML静态页面出现中文乱码如何解决? 引入<meta charset="UTF-8"> 三.通常情况下块属性标签和

[APP] Android 开发笔记 003

接上节 [APP] Android 开发笔记 002 5. 使用ant release 打包 1)制作 密钥文件 release.keystore (*.keystore) keytool -genkey -v -keystore "release.keystore" -alias "release" -keyalg "RSA" -validity "10000" 这里需要注意的是: -keystore "relea

Web前端开发笔记整理

web前端开发笔记: 1.web前端之html_day1 2.web前端之html_day2 3.web前端之css_day1