|||
周末花点时间折腾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已经在头文件新建,这里就可以连接了):
搞定:
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-24 05:00
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社