小编ash*_*agi的帖子

Qt,QML和Windows 8

我一直对Qt框架引入的QML感到好奇.但从来没有机会使用它.但是现在随着Windows 8的到来,基于旧学校小部件的界面将会过时(只是我的意见!:)).现在我想问那些有QML经验的人:用QML编写Metro风格(或者现在怎么称呼)应用程序是否容易?QML photoshop插件是否可用于真实项目?

对于那些没有关于的Photoshop插件线索谁,请尝试在YouTube搜索:介绍Qt Quick的令人惊叹的UI创作 - 诺基亚开发者日,巴塞罗那2011(不知道,我是否可以在这里发布的链接:P)

另外,我用QML编写的Windows应用程序是否有用?

qt qml windows-8

10
推荐指数
1
解决办法
4243
查看次数

如何存根/模拟Qt类?

我是测试和TDD的新手但是决定试一试并学习.目前我正在尝试开发一个类SettingsManager来处理我的应用程序的设置.它将存储应用程序的状态以及何时关闭.SettingsManager将使用QSettings保存状态(并在启动时读取).现在我想模拟QSettings所以我的测试不依赖于随机状态.但是,由于我需要的方法(QSettings :: value())不是虚拟的,我找不到任何合理的方法来模拟/存根.

也许我在做一些概念错误的事情?或者有没有办法模拟非虚方法调用?

示例:假设我有这个类:

class SettingsManager
{    
private:
    /* app state variables */
    QSettings *settings;
    bool m_objectsVisible;

public:

    SettingsManager(QSettings *settings)
    {
       this->settings = settings;
    }

    void readSettings()
    {
       m_objectsVisible = settings.value("Settings/ObjectsVisible").toBool();
    }

    bool objectsVisible()
    {
       return m_objectsVisible;
    }
};
Run Code Online (Sandbox Code Playgroud)

我想以这种方式测试它(我使用Hippomocks语法只是为了给出一个想法)

void TestObjectsAreVisible() {
    MockRepository mocks;
    QSettings *settingsMock = mocks.ClassMock<QSettings>();
    mocks.ExpectCall(settingsMock , QSettings::value).With("Settings/ObjectsVisible").Return(true);
    SettingsManager *sManager = new SettingsManager(settingsMock);
    sManager->readSettings();
    assertTrue(sManager->objectsVisible);
}
Run Code Online (Sandbox Code Playgroud)

c++ tdd qt unit-testing mocking

5
推荐指数
1
解决办法
4592
查看次数

来自不同文件夹的 CMake 测试源

我开始使用 CMake 来使用 Qt 创建一个项目,并使用 Google Test 对其进行测试。此刻,我成功地找到了编译和链接所有所需库的方法。但是,我找不到将源链接到具有以下项目结构的测试文件的方法:

root
|
+-- CMakeLists.txt
+-- src
| |
| +-- CMakeLists.txt
| +-- MyClass.h
| +-- MyClass.cpp
|
+-- test
| |
| +-- CMakeLists.txt
| +-- MyClassTest.cpp
|
+-- lib
  |
  +-- gtest-1.6.0
    |
    +-- CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

根 CMakeLists.txt 包含 gtest、src 和 test 文件夹的 add_subdirectory。我已成功编译并运行“Hello world”应用程序和简单的 EXPECT_TRUE(true) 测试,以检查每个部分是否正确编译。不幸的是,我找不到将我的源文件包含到测试中的方法。以下项目结构是否可行?

PS我知道可以将我的源代码编译为库并将其链接到测试,但我不喜欢这种方法,因为它更适合集成测试,而不是单元测试......

编辑:将类名添加到树中

c++ cmake googletest ctest

5
推荐指数
1
解决办法
3816
查看次数

使用malloc()的第二个维度大小不等的多维数组

我正在使用不等的第二维尺寸的多维数组.让我们假设我需要以下数据结构:

[&PTR0] - > [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

[&PTR1] - > [0] [1] [2]

[&PTR2] - > [0] [1] [2] [3] [4]

int main()
{
 int *a[3];
 int *b;
 int i;

 a[0] = (int *)malloc(10 * sizeof(int));
 a[1] = (int *)malloc(2 * sizeof(int));
 a[2] = (int *)malloc(4 * sizeof(int));

 for(i=0; i<10; i++) a[0][i]=i;

 for(i=0; i<2; i++) a[1][i]=i;

 for(i=0; i<4; i++) a[2][i]=i;
}
Run Code Online (Sandbox Code Playgroud)

我做了一些测试,似乎我可以在[1] [3]中存储一个值.这是否意味着我的数组中的行大小相等10?

c malloc multidimensional-array

4
推荐指数
1
解决办法
1178
查看次数