QT(1)-Qt Creator 编写多窗口程序
2014-11-29 18:00
183 查看
实现功能:
程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直接关闭这个对话框,便不能进入主窗口,整个程序也将退出。当进入主窗口后,我们按下按钮,会弹出一个对话框,无论如何关闭这个对话框,都会回到主窗口。
实现原理:
程序里我们先建立一个主工程,作为主界面,然后再建立一个对话框类,将其加入工程中,然后在程序中调用自己新建的对话框类来实现多窗口。
实验过程:
1.首先新建Qt4 Gui Application工程,工程名为nGui,Base class选为QWidget。
2.新建对话框类,如下图,在新建中,选择Qt Designer Form Class,然后选择Dialog without Buttons,设类名为myDlg
3.点击Finsh,如下图所示,在mydlg.ui中构建窗口画面。
在mydlg.ui中拖入一个Push Button,将其上的文本改为“进入主窗口”,在其属性窗口中将其objectName改为enterBtn(Push Button名字),在下面的Signals and slots editor中进行信号和槽的关联,其中,Sender设为enterBtn,Signal设为clicked(),Receive设为myDlg,Slot设为accept()。这样就实现了单击这个按钮使这个对话框关闭并发出Accepted信号的功能。下面我们将利用这个信号。
4.修改主函数main.cpp
#include <QApplication>
#include “widget.h”
#include “mydlg.h” //加入头文件
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
myDlg my1; //建立自己新建的类的对象my1
if(my1.exec()==QDialog::Accepted) //利用Accepted信号判断enterBtn是否被按下
{
w.show(); //如果被按下,显示主窗口
return a.exec(); //程序一直执行,直到主窗口关闭
}
else return 0; //如果没被按下,则不会进入主窗口,整个程序结束运行
}
到这里,我们就实现了一个界面结束执行,然后弹出另一个界面的程序。下面我们在主窗口上加一个按钮,按下该按钮,弹出一个对话框,但这个对话框关闭,不会使主窗口关闭。
5.如下图,在主窗口加入按钮,显示文本为“弹出一个对话框”,在其上点击鼠标右键,在弹出的菜单中选择go to slot。
6.我们选择单击事件clicked()。
7.我们在弹出的槽函数中添加一句:
my2.show();
my2为我们新建对话框类的另一个对象,但是my2我们还没有定义,所以在widget.h文件中添加相应代码,如下,先加入头文件,再加入my2的定义语句,这里我们将其放到private里,因为一般的函数都放在public里,而变量都放在private里。
代码如下:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include “mydlg.h” //包含头文件
namespace Ui
{
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
myDlg my2; //对my2进行定义
private slots:
void on_pushButton_clicked();
};
#endif // WIDGET_H
到这里,再运行程序,便能完成我们实验要求的功能了。整个程序里,我们用两种方法实现了信号和槽函数的关联,第一个按钮我们直接在设计器中实现其关联;第二个按钮我们自己写了槽函数语句。
程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直接关闭这个对话框,便不能进入主窗口,整个程序也将退出。当进入主窗口后,我们按下按钮,会弹出一个对话框,无论如何关闭这个对话框,都会回到主窗口。
实现原理:
程序里我们先建立一个主工程,作为主界面,然后再建立一个对话框类,将其加入工程中,然后在程序中调用自己新建的对话框类来实现多窗口。
实验过程:
1.首先新建Qt4 Gui Application工程,工程名为nGui,Base class选为QWidget。
2.新建对话框类,如下图,在新建中,选择Qt Designer Form Class,然后选择Dialog without Buttons,设类名为myDlg
3.点击Finsh,如下图所示,在mydlg.ui中构建窗口画面。
在mydlg.ui中拖入一个Push Button,将其上的文本改为“进入主窗口”,在其属性窗口中将其objectName改为enterBtn(Push Button名字),在下面的Signals and slots editor中进行信号和槽的关联,其中,Sender设为enterBtn,Signal设为clicked(),Receive设为myDlg,Slot设为accept()。这样就实现了单击这个按钮使这个对话框关闭并发出Accepted信号的功能。下面我们将利用这个信号。
4.修改主函数main.cpp
#include <QApplication>
#include “widget.h”
#include “mydlg.h” //加入头文件
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
myDlg my1; //建立自己新建的类的对象my1
if(my1.exec()==QDialog::Accepted) //利用Accepted信号判断enterBtn是否被按下
{
w.show(); //如果被按下,显示主窗口
return a.exec(); //程序一直执行,直到主窗口关闭
}
else return 0; //如果没被按下,则不会进入主窗口,整个程序结束运行
}
到这里,我们就实现了一个界面结束执行,然后弹出另一个界面的程序。下面我们在主窗口上加一个按钮,按下该按钮,弹出一个对话框,但这个对话框关闭,不会使主窗口关闭。
5.如下图,在主窗口加入按钮,显示文本为“弹出一个对话框”,在其上点击鼠标右键,在弹出的菜单中选择go to slot。
6.我们选择单击事件clicked()。
7.我们在弹出的槽函数中添加一句:
my2.show();
my2为我们新建对话框类的另一个对象,但是my2我们还没有定义,所以在widget.h文件中添加相应代码,如下,先加入头文件,再加入my2的定义语句,这里我们将其放到private里,因为一般的函数都放在public里,而变量都放在private里。
代码如下:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include “mydlg.h” //包含头文件
namespace Ui
{
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
myDlg my2; //对my2进行定义
private slots:
void on_pushButton_clicked();
};
#endif // WIDGET_H
到这里,再运行程序,便能完成我们实验要求的功能了。整个程序里,我们用两种方法实现了信号和槽函数的关联,第一个按钮我们直接在设计器中实现其关联;第二个按钮我们自己写了槽函数语句。
相关文章推荐
- 二、Qt Creator编写多窗口程序
- 在Qt环境里调用VS2008编译器编译Qt Creator编写的程序
- 二、Qt Creator编写多窗口程序
- QT5每日一学(二)编写QT多窗口程序
- 二、Qt Creator编写多窗口程序
- 二Qt Creator编写多窗口程序
- Qt5基础(二)编写Qt多窗口程序笔记
- Qt creator第一个Qt5小程序:显示带背景颜色或图片的QWidget的Hello World窗口
- Qt_Creator编写多窗口程序
- 二Qt Creator编写多窗口程序
- 用Qt Creator编写一个简单的窗口程序
- 编写Qt多窗口程序
- 用QT编写的程序,怎样在申请资源失败后,关闭所有窗口,退出程序?
- 使用Qt Designer和手动编写代码两种方式实现多窗口切换程序(Qt基础)
- 用QT编写的程序,怎样在申请资源失败后,关闭所有窗口,退出程序?
- 二、Qt Creator编写多窗口程序
- 用Qt Creator编写一个简单的窗口程序
- 二、Qt Creator编写多窗口程序
- 编写Qt多窗口程序
- Qt编写串口通信程序全程图文讲解(一)