回复: 【提问】QDialog的初始化问题
#6 [sjlung 12-07 21:33]
下面是引用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 [不想重名 12-08 08:42]
楼上的如果用4.0版,就不存在我这样的问题了,你直接把初始化代码放在构造函数中就可以了。
另外,4版和3版差别较大,学习4版最好使用QT Assistant中的教程。
#8 [sjlung 12-08 19:36]
“不想重名”先生:
我就是把初始化代码放在构造函数中,可是……
用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的设计模式”那篇,然后抓其意义写出了
我附上的程式。
#9 [XChinux 12-08 19:57]
下面是引用sjlung于2005-12-07 21:33发表的:
XChinux总版主:
在Qt Programming 版的置顶有个 【推荐】C++/QT电子书下载,里面有本
.......
我不知道Qt3.x中的自动生成init()函数的运行原理是怎样的,是不是其实就是在构造函数中调用的init()函数?
Qt4和3.x差别是比较多。目前论坛里提供的电子书,没有一本是for Qt4的,所以那些书里的例程,并不能完全在Qt4下面运行。
#10 [不想重名 12-09 08:44]
sjlung,你好,我没用过QT4,我感觉应该在构造函数中加入一行。如下
GoToCellDialog::GoToCellDialog():Ui_GoToCellDialog()
{
setupUi()//新加入的行
QRegExp regExp("[1-9][0-9]{0,2}");
lineEdit->setValidator(new QRegExpValidator(regExp, this));
}
这是我的简单想法,不一定对,请你试试。
另外,建议你将QT4的Assistant中的相关例子看一下,可能就明白了。