Chinaunix首页 | 论坛 | 博客
  • 博客访问: 637261
  • 博文数量: 237
  • 博客积分: 4285
  • 博客等级: 上校
  • 技术积分: 2701
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-15 14:05
文章分类

全部博文(237)

文章存档

2014年(2)

2013年(3)

2012年(47)

2011年(15)

2010年(68)

2009年(102)

我的朋友

分类: LINUX

2010-04-06 17:11:08

今天重新开工,刚刚进行了QtCreator的多窗口程序的学习,是参考网上的一些资料做的。程序的功能是程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直接关闭这个对话框,便不能进入主窗口,整个程序也将退出。当进入主窗口后,我们按下按钮,会弹出一个对话框,无论如何关闭这个对话框,都会回到主窗口。现在我们具体的来做这个实验。

1. 新建Qt4 Gui Application工程,工程名为MultiWindowBaseclass选为QWidget。建立好后工程文件列表如下图。

2.新建对话框类,如下图,选择Qt Designer Form Class

3.选择Dialog without Buttons

4.类名设为xyDlg

 

 

5.点击Finish完成。注意这里已经默认将其加入到了我们刚建的工程中了。添加前后工程新增的内容如下图所示。

添加前

添加后

6.如下图,在xydlg.ui中拖入一个PushButton,将其上的文本改为进入主窗口,在其属性窗口中将其objectName改为enterBtn,在下面的Signalsand slotseditor中进行信号和槽的关联,其中,Sender设为enterBtnSignal设为clicked()Receive设为xyDlgSlot设为accept()。这样就实现了单击这个按钮使这个对话框关闭并发出Accepted信号的功能。下面我们将利用这个信号。

 

 

7.修改主函数main.cpp,如下:

i nclude
i nclude "widget.h"
i nclude"xydlg.h"                       //加入头文件

int main(int argc, char *argv[])
{
    QApplicationa(argc, argv);
    Widgetw;
    xyDlgxy1;                          //
建立自己新建的类的对象xy1
   if(xy1.exec()==QDialog::Accepted)   //
利用Accepted信号判断enterBtn是否被按下

   {
       w.show();                       //如果被按下,显示主窗口
   ,南勇碎了我的国脚梦;    returna.exec();                //
程序一直执行,直到主窗口关闭
    }
 ,
年度翘尾行情值得期待!(附股);   else return0;        ,我的2009;              //
如果没被按下,则不会进入主窗口,整个程序结束运行
}

   主函数必须这么写,才能完成所要的功能

8.如下图,在主窗口加入按钮,显示文本为“Go toSubWindow”,在其上点击鼠标右键,在弹出的菜单中选择go to slot

 

9.我们选择单击事件clicked()

10.我们在弹出的槽函数中添加一句:

    xy2.show();

  xy2为我们新建对话框类的另一个对象,但是xy2我们还没有定义,所以在widget.h文件中添加相应代码,如下,先加入头文件,再加入my2的定义语句,这里我们将其放到private里,因为一般的函数都放在public里,而变量都放在private里。

   #ifndef WIDGET_H

   #define WIDGET_H

 

   i nclude

   i nclude"xydlg.h"   //包含头文件

   namespace Ui

  {

   class Widget;

  }

 

   class Widget : publicQWidget

 {

   Q_OBJECT

 

   public:

   Widget(QWidget *parent =0);

   ~Widget();

 

   private:

   Ui::Widget *ui;

   xyDlgxy2;      //my2进行定义

   private slots:

   voidon_pushButton_clicked();

   };

 

  #endif // WIDGET_H

    到这里,再运行程序,便能完成我们实验要求的功能了。看一下效果图:

  

 

整个程序里,我们用两种方法实现了信号和槽函数的关联,第一个按钮我们直接在设计器中实现其关联;第二个按钮我们自己写了槽函数语句,其实图形的设计与直接写代码效果是一样的。这个程序里我们实现了两类窗口打开的方式,一个是自身消失而后打开另一个窗口,一个是打开另一个窗口而自身不消失。可以看到他们实现的方法是不同的。

转自:http://www.abook.cn/blog/u/xugao918/archives/2010/552548.html

阅读(1170) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~