• 4454阅读
  • 2回复

QT4 Designer自动生成的代码问题 [复制链接]

上一主题 下一主题
离线kmax
 
只看楼主 倒序阅读 楼主  发表于: 2008-06-12
— 本帖被 XChinux 执行加亮操作(2008-06-13) —
我用Eclipse和QT designer的插件自动生成一个工程。

里面有个Ui_mm.h , mm是工程名。

/********************************************************************************
** Form generated from reading ui file 'mm.ui'
**
** Created: Wed Jun 11 13:27:36 2008
**      by: Qt User Interface Compiler version 4.4.0
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/

#ifndef UI_MM_H
#define UI_MM_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QWidget>

QT_BEGIN_NAMESPACE

class Ui_mmClass
{
public:

    void setupUi(QWidget *mmClass)
    {
    if (mmClass->objectName().isEmpty())
        mmClass->setObjectName(QString::fromUtf8("mmClass"));
    mmClass->resize(400, 300);

    retranslateUi(mmClass);
   
    QMetaObject::connectSlotsByName(mmClass);
    } // setupUi

    void retranslateUi(QWidget *mmClass)
    {
    mmClass->setWindowTitle(QApplication::translate("mmClass", "mm", 0, QApplication::UnicodeUTF8));
    Q_UNUSED(mmClass);
    } // retranslateUi

};

// 不知道这个mmClass是干什么的,为什么要这个空的子类干什么,直接用父类不行吗?
namespace Ui {
    class mmClass: public Ui_mmClass {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_MM_H

不知道这个mmClass是干什么的,为什么要这个空的子类干什么,直接用父类不行吗?

另外,slot的实现部分应该写在哪个类里? 有人用VS2005的QT4,可以直接生成on_pushButton_clicked()形式的slot,并且不用connect语句,直接利用QMetaObject::connectSlotsByName(mmClass);自动匹配slot,很方便。。而我的没有,它会一个个的加connect进去,还要自己去写slot。

谁能解释这两个问题吗? 是不是由于我用的是Opensource版的?



QT 4.4.0  Win XP
离线shiroki

只看该作者 1楼 发表于: 2008-06-12
你问的问题没什么好解释的哦。 为什么要mmClass这个空的类。。。没什么为什么, 人家觉得这样封装好, 就这样封装了。我觉得重点是用个namespace把这个类包含起来, 防止和用户自定义的类重名。 至于这个头文件的代码怎么写就是qt的问题了,不需要关心,你用起来没问题不就好了吗

自动添加的代码是vsintegration额外提供的功能, 这个就更没什么好解释的了。 你想用自动添加你也可以自己调 那个connectSlotsByName函数阿,不是一样不用一个一个connect。
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线kmax
只看该作者 2楼 发表于: 2008-06-13
那个namespace Ui不能直接加在Ui_mmClass类上吗?

那个connectSlotsByName的问题,我已经研究过了,就是要建立一个父子关系,然后才能调用connectSlotsByName.
QT 4.4.0  Win XP
快速回复
限100 字节
 
上一个 下一个