zhanghouxing的个人博客分享 http://blog.sciencenet.cn/u/zhanghouxing

博文

QT GUI 初探

已有 4664 次阅读 2016-7-24 23:29 |个人分类:Qt|系统分类:科研笔记| gui

周末花点时间折腾QT GUI的东西,基本东西掌握得差不多了,现在点总结。

(1)第一步,我们新建一个主窗口,然后添加三个文本框,计算两个数据之和:


在UI deigner中拖入文本框,然后加入两个按钮,我们右键button1,选择->转入槽,关于基本概念,我就不解释了,进入到click事件响应函数里面:


然后,即可实现两个数据之和,并显示在文本3中。这里,为了理解Qt中信号与槽的机制,我做了一个的测试,我首先添加button Connect,然后再click事件响应函数中添加:

connect(this->ui->add,SIGNAL(clicked()),this,SLOT(myslot1()));

其中add即Button1,myslot函数即上面函数中的内容,这样打开界面,先输入前面两个数,然后点击connect,最后点Button1即可。注意,此connet函数不能放在MainWindow的构造函数,否则this->ui->add无效,我现在的理解是,在建立新建窗口时,便首先进入窗口的构造函数,然而此时窗口的组成部分如button,editText并未实例化,所以this->ui->add无效显示NULL;当然这种方法,完全没有必要,有点画蛇添加的意思,主要是为学习。

(2)建立菜单和工具


如上图所示,我们建立三个主菜单和四个工具,建立菜单方法简单,直接在文本框输入菜单名字,并双击即可,点击菜单,可以建立多个Action,如下图所示:


相应地,我们可以拖到Action Editor下面的刚刚建立的Action到工具栏,构成工具,如下图:

(3)为Action建立响应函数

右键上面建立的Action,转入槽,然后进入函数,这里我们编写了一个打开文本文件,并显示到MainWindow上 文本框上,修改文本框内容,点击保存,可以保持到打开的文本文件中,代码如下:


演示:

(4)最后,我们要建立多窗口,并实现数据的传递

首先我们添加Dialog类,方法就是右键项目文件,选择添加新文件,选择QT设计师界面类,如下:


这时候在工程文件中,就会多了三个,dialog1.h和dialog1.cpp,dialog1.ui,打开ui文件便可以对dialog进行编辑,我们建立如下的Dialog:


然后我们在主菜单忠的编辑菜单下Action列表中,选择New,右键选择转入槽,输入如下代码:

voidMainWindow::on_NewWindow_triggered(){   dialog1.show();  //dialog1.showText(TextEdit);   dialog1.exec();}

注意,在调用dialog1.show函数时,首先要引入include "dialog1.h",然后新建dialog1,可以MainWindow的头文件实现,也可以在上面的函数中实现,即:

Dialog1 dialog1; //(前面是类名,后面是实例化变量)


(5) 主窗口与子窗口数据传递。

功能描述,在主窗口中打开文本文件显示之后,点击按钮PushtoDialog,主窗口txt显示在dialog窗口中,相反的功能也能实现。

首先,我们要建立主窗口的信号函数,然后将文本框中内容传入进去:

voidMainWindow::on_pushButton_2_clicked(){ emit mysignalShow(TextEdit);}


然后,建立dialog1中对应的槽函数,一定记住,信号函数和槽函数格式必须一样,即:

voidDialog1::showText(QStringstring){
this->ui->textEdit->setText(string);//写内容}


最后,连接信号与槽:

用同样的方法,建立Dialog1中信号函数:

voidDialog1::on_pushMain_clicked(){  txtShowinMain=this->ui->textEdit->toPlainText();  emit textShowInMain(txtShowinMain);

}

然后建立,MainWindow中的SLOT函数:

voidMainWindow::MaintxtShow(QStringstring){this->ui->textEdit_2->setText(string);}

最后连接(也在MainWindow的构造函数中连接,只要dialog已经在头文件新建,这里就可以连接了):


搞定:




https://blog.sciencenet.cn/blog-922140-992578.html

上一篇:DEM格网排序
下一篇:儒略日与标准时间转换
收藏 IP: 210.72.80.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-2 10:35

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部