PyQt5/Qt 编写程序时,代码目录层次如何划分

您所在的位置:网站首页 编写菱形的程序怎么写 PyQt5/Qt 编写程序时,代码目录层次如何划分

PyQt5/Qt 编写程序时,代码目录层次如何划分

2024-07-07 08:50:08| 来源: 网络整理| 查看: 265

我个人在写PyQt5代码时,喜欢讲代码UI和逻辑分为几块,将界面分为上中下三个部分,创建各部分对应的组件,如

GUIA,GUIB,GUIC,   MAINGUI,其中GUIA,GUIB,GUIC只负责创建组件,MAINGUI则负责继承GUIA,GUIB,GUIC,然后设置组件尺寸,布局,样式,同样的,逻辑部分也分为上中下,

LOGICA,LOGINCB,LOGICC 三个部分,另外还有一个SECONDARY则写一些公共部分的逻辑代码,这三个逻辑部分肯定会用到组件,所以也都使用super继承与MAINGUI进行逻辑部分代码的编写,而SECONDARY则继承LOGICA,LOGINCB,LOGICC,在这三块逻辑部分的基础上进行公共部分逻辑的编写,最后则是 PRIMARY的主信号槽连接部分,信号槽部分很显然,继承了SECONDARY,此时,一个典型的菱形继承完成了,如下图

当时使用python的时候,因为这个菱形继承确实带来了不少难题,典型的未初始化,缺失参数等等,后面通过不断地测试解决了,程序运行起来没什么问题,但是到了QT这边,我打算还是用菱形继承,毕竟这么来写一目了然,代码在哪块一下子就找到了,不用翻半天,然而QT特有的Q_OBJECT宏真的是个大麻烦,即在编写信号槽函数时,需要声明Q_OBJECT宏,然而这么一继承过来后,几个Q_OBJECT宏程序不知道用哪个了,典型的报错

cannot convert from pointer to base class 'QObject' to pointer to derived class 'LogicRoof' via virtual base 'BasicWidget'

意思是  虚继承派生类不能转化基类的QOBject 指针,也就是说为了达到python中super后基类只用运行一次,不用重复运行的效果,我们使用了virtaul虚继承基类,但貌似没能把基类的QObject继承过来?,我比较小白,不太理解是什么导致的,该如何解决,想过不适用虚继承算了,但是很显然,第一步编译都不通过,那我直接继承基类,逻辑部分也是继承基类然后我在PRIMARY类中用实例化逻辑部分类的方式来连接信号槽总该可以吧,然而信号槽根本连不起来,参数不匹配,不像python那样一连一个准。

在使用虚继承后,寻着报错代码,发现问题处在信号槽上,我把信号槽连接部分代码全部注释了,程序UI跑起来了,但是一放开信号槽,报错又来了,无论怎么改,这可为难我小白了

而且在逻辑部分,我还用了自定义的弹框,并且带有信号槽部分,同样的,这部分也跟着报错了

QString File = QFileDialog::getOpenFileName(this, "Add File", CommonlyFolder, "All files (*)"); if ( !File.isEmpty() ){ NMessageBox *FileDiaBox = new NMessageBox(MessagePrepare, {"Add The Path", "Ignore"}, QMessageBox::Question, "Add File", QString("File Verify: {%1}").arg(File)); OccaFile = File; connect(FileDiaBox, &QMessageBox::buttonClicked, this, &LogicRoof::DialogCFile);

这咋整,难不成我要在主UI中把用到的弹框全部定义一遍?,然后在PRIMARY类统一关联信号?,那得多蠢啊,那不这么做又该怎么办,哪怕这么做那PRIMARY之前的信号槽都注释掉程序UI才能出的来,把代码挪那去就能用了吗,深深的无力感,报错是这么个报错,但是感觉无从下手,很糟心,有大佬指条明路吗,菱形继承容易出问题,但是要怎么写才能更方便呢,又或者可以用菱形继承QObject又该怎么去解决呢

了解到,QT和PyQt貌似不太一样,QT只能有一个QObject,显然这个特性菱形继承是别想了,

要不就是把逻辑对一块写,要不就是几个逻辑模块一条线继承过来,不能直接多继承,好吧,这并不是我想要的结果,有点强迫...哈哈,最终两个方案,很显然第二种方法更好些,代码好维护



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭