Qt的不同界面之间的数据交换问题[主界面以及子界面]

这是一个可能复杂也可能简单的问题,因为界面之间的数据共享,要求不同,具体的编码方式也不同,但主要是采取Global的方式进行

这是个有意思的东西,因为原则上而言一个Qt程序只拥有一个主界面,从界面目的是配合主界面,主界面上通常集成了很多的操作(OPERATION),当一些可以移出的部分存在时,从界面就需要了,例如在主界面上通过点击按钮触发事件,具体的设定之类(从界面负责键入数据信息)可以通过从界面进行,设定的信息通过全局变量进行修改

void MainWindow::SLOTS_SETSAVEMODE_INIT()
{
    modechoose_another = new SetSaveMode;

    modechoose_another->setWindowTitle("模式设置");
    modechoose_another->show();
}

全局变量在某处被修改,其值更新为现值,其余处的检测、判断条件就可以起作用了,例如采取定时器刷新来显示当前该Global变量的值

这就很好了,主界面就不需要设计的如此复杂了,多定义从界面、全局变量(当然是设定层面,但也挺多),这可以很大程度上增加主界面的功能容量,并且,尽可能显示最直观的“必要信息和操作之类”

关于调试信息?

if(QObject::connect(ui->querenanniiu,SIGNAL(clicked()),this,SLOT(OK_BUTTON())))
{
    qDebug()<<"Connect OK button success!";
    ui->debugmation->append("Connect OK button success!");
}

实际上后台打印要比前台显示更,所谓的雅观,因为前台显示能看见(即使后期发布会做屏蔽,但,也是个麻烦事),而CONSOLE却比较懂人心,直接在后台处理了(实际上CONSOLE也可以在运行界面时同时显示🐸)

之前Python写的浏览器就是CONSOLE同步显示,实际上产品不会这样,但是作为一种直观的测试途径,对于设计者,能看见自然更能快速的发现程序的运行状况,修起来也方便

退出从界面!

从界面自然有带默认退出功能(x)键,但是即使我们不设置额外的退出键,在设定完成之后也应该主动退出从界面,这里可以有两个(目前试过的)

  • exit()
  • close()
void SetSaveMode::CANCEL_BUTTON()
{
    //
    //exit(0);
    this->close();
}

前一个直接退出整个程序了,后一个的话是退出当前从界面(从进程),所以,后一个靠谱,如果为了设定强制退出功能,可以使用第一个(防卡,直接给消灭进程)

靠谱的代码应该鲁棒性较高,换一个说法,也可以表述成武装到牙齿!!!

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注


皖ICP备2021003932号
召唤伊斯特瓦尔