没有合适的构造函数可用??

    最近又在看《C++ GUI Programing with Qt 4》(Second Edition),按照里面的里面的例子做着。我没有按照书里的步骤,先绘制界面,再编写头文件、源文件……而是直接用的Qt Creator新建的工程。结果按照书里说的,在Qt设计师中修改了窗体的objectName后,就老编译不过去了。老是说“Ui::xxxxxxx没有合适的构造函数可用”。我想肯定是修改了objectName,没有对应修改头文件或源文件的一些地方的原因。

    想了一下,将工程中的源文件和头文件中包含原来objectName的地方全部改为现在的objectName,问题就解决了。

    大家不要笑,本人才接触这个东西,对它的机制还不太了解。

    我做的是例子2.4——改变形状的对话框。用Qt Creator编译sortdialog后,在sort-build-desktop目录中会产生一个名为ui_sortdialog.h的文件。这个文件实际上就是Qt界面的C++实现。我们打开这个文件,可以看到在代码的末尾有个:

      namespace Ui {

                              class SortDialog: public Ui_SortDialog {};

                             } // namespace Ui

    这么看,那命名规则就是class objectName:public Ui_objectName{}。也就是说SortDialog类是从Ui_SortDialog继承而来的。在Qt Creator2.0.1(Qt 4.7)生成的工程文件中,sortdialog.h是没有包含ui_sortdialog.h的。那么它是怎么调用Ui的呢?它没有像书中写的那样工作,而是在SortDialog类中写了这么一句“private: Ui::SortDialog *ui",建立了一个Ui类的指针。刚才我们知道Ui::SortDialog是从Ui_Sortdialog类继承而来的,这样通过Ui::SortDialog类的指针也就可以对用户创建的界面中的空间进行操作了。又因为在sortdialog.h中并没有包含ui_sortdialog.h,所以为了使编译器不出错,程序在sortdialog.h中又定义了一个同样的命名空间

      namespace Ui { class SortDialog; }。然后,在sortdialog.cpp中,程序包含了ui_sortdialog.h。在这个文件中,实现了SortDialog类。

    除了这些以外,其余部分应该就和书里面一样了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值