移植到Qt4后一窗口部件在QSplitter上显示不出来问题原因查找处理

今天调试移植到Qt的一对话框发现其中添加到QSplitter上的一个列表树未显示出来,查找发现

此要显示的对象是Ui_xxxx的派生类,此派生类的第一父类应为QWidget,而移植时错写成了

QDialog,相应的其构造函数变量初始化处的父类也错写成了QDialog(Qparent),

改正后可以显示出来了。这里与Qt3to4时的两点移植规则有关:

1. ui的派生类要多继承,首先继承uic自动生成的Ui_*类的setupUi函数中参数的Qt的

对应类名,其次继承自动生成的Ui_*类,顺序不能

2. 派生类的构造函数,首先把在成员变量初始化处的Qt3时使用的父类名改成现继承的

第一个父类名,其次在构造数第一行中添加setupUi(this);语句。查找此问题过程中

测试发现当把QDialog对象用addWiget()函数加到QSplitter对象中时,创建QDialog

对象时若指定父对象为QSplitter对象,则此QDialog显示不出来,不指定父对象时可以显示

出来。例如,以下语句能正常显示:

QSplitter *spHori = new QSplitter(this,"spHori"); 

spHori->setOrientation(Qt::Horizontal);

QDialog *dialog = new QDialog();

spHori->addWidget(dialog);

但若将其中的创建QDialog对象语句换成下面一句则QDialog将显示不出来:

QDialog *dialog = new QDialog(spHori);

当然,一般不会这样用,即一般不会把QDialog添加到QSplitter上。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值