我一直对Qt框架引入的QML感到好奇.但从来没有机会使用它.但是现在随着Windows 8的到来,基于旧学校小部件的界面将会过时(只是我的意见!:)).现在我想问那些有QML经验的人:用QML编写Metro风格(或者现在怎么称呼)应用程序是否容易?QML photoshop插件是否可用于真实项目?
对于那些没有关于的Photoshop插件线索谁,请尝试在YouTube搜索:介绍Qt Quick的令人惊叹的UI创作 - 诺基亚开发者日,巴塞罗那2011(不知道,我是否可以在这里发布的链接:P)
另外,我用QML编写的Windows应用程序是否有用?
我是测试和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) 我开始使用 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我知道可以将我的源代码编译为库并将其链接到测试,但我不喜欢这种方法,因为它更适合集成测试,而不是单元测试......
编辑:将类名添加到树中
我正在使用不等的第二维尺寸的多维数组.让我们假设我需要以下数据结构:
[&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?