代码之家  ›  专栏  ›  技术社区  ›  cwallenpoole

帮助理解qtest教程

  •  2
  • cwallenpoole  · 技术社区  · 15 年前

    在qtestlib的教程中,有对文件“testgui.moc”和“testqstring.moc”的引用(这里有一个示例: http://www.englishbreakfastnetwork.org/coverage/build/qt-copy/examples/qtestlib/tutorial3/.moc/debug-shared/testgui.moc )。其中包括配置测试所需的几条信息。不幸的是,这些教程没有解释这些信息是什么,也没有解释如何更改这些信息。具体来说,我指的是以下几行:

    static const uint qt_meta_data_TestQString[] = {
    
     // content:
           2,       // revision
           0,       // classname
           0,    0, // classinfo
           2,   12, // methods
           0,    0, // properties
           0,    0, // enums/sets
           0,    0, // constructors
    
     // slots: signature, parameters, type, tag, flags
          13,   12,   12,   12, 0x08,
          28,   12,   12,   12, 0x08,
    
           0        // eod
    };
    
    static const char qt_meta_stringdata_TestQString[] = {
        "TestQString\0\0toUpper_data()\0toUpper()\0"
    };
    

    现在,根据我对qt的理解,qt-meta-stringdata-testqstring变量是带有附加方法名称的类引用——这可以通过一行代码来实现。 METHOD(toUpper()) ,但我不确定这是否以及如何与结果格式之外的任何内容相关。

    总的来说,我想知道发生了什么。在文件顶部提供的注释表示,它与“元对象代码”有关,而且根据它稍后重写的方法,这一点似乎很明显。

    但是,更重要的是,我想知道如何修改qt_meta_数据数组,以便它允许我调用更多的函数和/或允许我将上面的函数重新命名为不同长度的名称(将方法名称从toupper切换到toaple似乎不会造成任何问题,但将它们更改为touppercase或toup都会导致测试应用程序无法按预期运行)。

    **************************更新**********

    下面已经有一个可接受的答案,但我认为我应该补充一下:这些文件之所以出现在教程中,唯一的原因是教程作者决定不为他们的类提供.h和.cpp文件。否则它们是无用的。

    1 回复  |  直到 15 年前
        1
  •  4
  •   LukáÅ¡ Lalinský    15 年前

    您发布的代码由qt生成 meta object compiler (moc) 从你的头文件。你不应该自己写/更改文件。只需写下你的类标题就可以了。 moc 在它上面(通常由您使用的构建系统处理, qmake 默认情况下会这样做)。