• 13247阅读
  • 11回复

【提问】QDialog的初始化问题 [复制链接]

上一主题 下一主题
离线不想重名
 
只看楼主 倒序阅读 楼主  发表于: 2005-11-23
请问,用QT Designer编写对话框时,如何加入对话框段初始化代码,类似VC的InitDialog。
我用的是Qt 3.3.5 for Linux

谢谢了!
离线不想重名
只看该作者 1楼 发表于: 2005-11-23
通过继承ui文件生成的类可以做到,但我只需要很少的初始化代码,不想这么复杂。
离线XChinux

只看该作者 2楼 发表于: 2005-11-23
在构造函数里面写
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线不想重名
只看该作者 3楼 发表于: 2005-11-23
我知道在构造函数中可以做到,但是我想在Qt Designer中直接写自己的初始化代码。
QtDesigner中可以写构造函数的代码吗?

谢谢!
离线不想重名
只看该作者 4楼 发表于: 2005-11-23
我知道了。

在QtDesigner中给对话框增加一个void init()保护虚函数,生成的类的构造函数会自动在最后调用这个函数的。

但这个方法在文档中我没有看到,书中写得也不详细。

谢谢斑竹。
离线不想重名
只看该作者 5楼 发表于: 2005-11-27
zzzzzz1234,你好,我这里没有Qt 3.1 环境,我只能说说我的做法:

不要在代码编辑窗口中直接输入void init()函数,而是用Qt Designer的向导增加一个init函数,QtDesigner会自动在代码窗口中加入函数框架。

你试试,不知行不行.
离线sjlung
只看该作者 6楼 发表于: 2005-12-07
下面是引用XChinux于2005-11-23 16:21发表的:
在构造函数里面写



XChinux总版主:
在Qt Programming 版的置顶有个 【推荐】C++/QT电子书下载,里面有本
C++ GUI Programming with Qt 3,在该本电子书的第二章的第25页,有个
利用到init程序的源码,在第26页的英文说明解释着:init() function
于form构造函数后(由uic产生的)自动执行。

而因为我找不到QDialog的init(),所以我尝试将该页的程序,如同您说的
,放在构造函数里写,但是可以编译,却不能执行,会当机。

再者,因为我是用Qt 4.0.1 Open source之Windows版的,用MinGW来编译程
式的,所以我在Qt Designer里无法如其它人所说的:在QtDesigner中给对
话框增加一个void init()保护虚函数。

请问,我该怎么办呢?
离线不想重名
只看该作者 7楼 发表于: 2005-12-08
楼上的如果用4.0版,就不存在我这样的问题了,你直接把初始化代码放在构造函数中就可以了。
另外,4版和3版差别较大,学习4版最好使用QT Assistant中的教程。
离线sjlung
只看该作者 8楼 发表于: 2005-12-08
“不想重名”先生:
我就是把初始化代码放在构造函数中,可是……
用qmake ... 到make的编译过程中,都没出现错误讯息
,但是……执行程式时,就会出错而终止执行。

终止执行的错误讯息类似:
"0x00b119da"指令参考的"0x0000002d"记忆体。该记忆体不能为"read"。

附上我的程式码,此码是参照"C++ GUI Programming with Qt 3.pdf"
第二章第25页的程式修改成Qt 4.0.1版而成的。

ps:Qt Assistant里的教程的程式码,怎么看都像用Qt 3.X
写出来的,一点也不像用Qt Designer 4.0.1写的东西。

我参考了 fanyu 先生,在Qt Class Library版,于2005-09-24 10:29
发表的”【原创】Qt Design的设计模式”那篇,然后抓其意义写出了
我附上的程式。
[ 此贴被sjlung在2005-12-08 21:01重新编辑 ]
附件: GoToCell.rar (2 K) 下载次数:4
离线XChinux

只看该作者 9楼 发表于: 2005-12-08
下面是引用sjlung于2005-12-07 21:33发表的:
XChinux总版主:
在Qt Programming 版的置顶有个 【推荐】C++/QT电子书下载,里面有本
.......


我不知道Qt3.x中的自动生成init()函数的运行原理是怎样的,是不是其实就是在构造函数中调用的init()函数?

Qt4和3.x差别是比较多。目前论坛里提供的电子书,没有一本是for Qt4的,所以那些书里的例程,并不能完全在Qt4下面运行。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线不想重名
只看该作者 10楼 发表于: 2005-12-09
sjlung,你好,我没用过QT4,我感觉应该在构造函数中加入一行。如下

GoToCellDialog::GoToCellDialog():Ui_GoToCellDialog()
{
  setupUi() //新加入的行
  QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");
  lineEdit->setValidator(new QRegExpValidator(regExp, this));
}

这是我的简单想法,不一定对,请你试试。

另外,建议你将QT4的Assistant中的相关例子看一下,可能就明白了。
离线sjlung
只看该作者 11楼 发表于: 2005-12-09
不想重名 先生,您好!我的问题已解决了!
我是参考XCinux于Qt中文论坛 -> Qt Programming -> 【原创】学习QT4初步编程(二)
发表的帖,里面写的很清楚,把观念搞通,用Qt 4写程式,也很方便的!
快速回复
限100 字节
 
上一个 下一个