• 5314阅读
  • 6回复

dialog对话框----一定来看看 [复制链接]

上一主题 下一主题
离线teddyran
 
只看楼主 倒序阅读 楼主  发表于: 2008-10-07
— 本帖被 XChinux 执行加亮操作(2008-10-12) —
我用designer(QT3)创建了两个dialog,分别为form1,form2,分别保存为form.ui和form2.ui。form1上有button1,form2上有button2和textLabel1。我想点击button1,弹出form2,然后点击button2 ,textLabel1显示“hello,qt!”。
  button1连接create1()槽。button2连接setLabel().都设置为modalless。
在form1.ui.h中有:
Form1::create1()
{QDialog *dialog=(QDialog *)QWidgetFactory::create("form2.ui");
  if(dialog->exec()) 
    {qDebug("enter exec");
      /*QPushButton *pB1=(QPushButton *)dialog->child("pB1","QPushButton");*/
      }
  delete dialog;
}

问题1:if语句什么时候才能进去?
在form2.ui.h中
Form2::setLabel()
{ qDebug("enter setLabel");

    textLabel1->setText("hello,qt!");
}
[size=3]问题2:运行之后发现,form2弹出,点击button2没有反映,即没有进入setLabel槽。当调用create1函数时,form2弹出来,但没有调用form2的构造函数(我qDebug跟踪的)。是不是QWidgetFactory::create函数的原因?它只是读出了ui文件,而实际上内存中并没有构建form2窗体?
问题3 :如果我想实现上面的功能,该怎么做?
离线teddyran
只看该作者 1楼 发表于: 2008-10-08
群主们来看看啊,I need help
离线jipenghao
只看该作者 2楼 发表于: 2008-10-08
我也很期待啊,帮顶!
G
离线chaoscxm
只看该作者 3楼 发表于: 2008-10-08
if 要在form运行完毕返回才能进入,一般情况就是form2关闭了才行。
帖子签名(将在每个帖子下方显示)
离线frankpaine
只看该作者 4楼 发表于: 2008-10-08
QWidgetFactory没用过。
不晓得要if干嘛。

按常规做法,分别写两个类继承自ui
然后定义两个指针a *pa;b *pb;
connect  pa的button点击事件到slot(create()),
然后在create函数里 :
pb = new b;
connect pb的button点击事件到slot(setText());

应该很容易的吧。。。
另外,qt4的文档里有两句话,不晓得楼主看过没
The most common way to display a modal dialog is to call its exec() function.
"Modeless dialogs are displayed using show(), which returns control to the caller immediately."
[ 此贴被frankpaine在2008-10-08 22:24重新编辑 ]
离线teddyran
只看该作者 5楼 发表于: 2008-10-09
谢谢4楼的,modal 和modaless 我知道区别,我用你说的方法做做,我是QT3
离线teddyran
只看该作者 6楼 发表于: 2008-10-09
4楼的大哥,你能留下qq吗,最好给我个例子看看啊
快速回复
限100 字节
 
上一个 下一个