【问题标题】:Help understanding QTest tutorials帮助理解 QTest 教程
【发布时间】:2010-12-25 23:03:13
【问题描述】:

在 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_data 数组,以便它允许我调用更多函数和/或允许我将上面的函数重命名为不同长度的名称(切换方法从 toUpper 到 toApple 的名称似乎没有问题,但是将它们更改为 toUppercase 或 toUp 都会导致测试应用程序无法按预期运行)。

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

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

【问题讨论】:

    标签: qt qtestlib moc


    【解决方案1】:

    您发布的代码是由 Qt 的 meta object compiler (moc) 从您的头文件中生成的。您不应该自己编写/更改文件。只需编写您的类头并在其上运行moc(这通常由您使用的构建系统处理,qmake 默认会这样做)。

    【讨论】:

    • 谢谢。再一次,QT 比我想象的要简单得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 2013-03-31
    相关资源
    最近更新 更多