小编sid*_*guy的帖子

如何在应用程序设置中存储int []数组

我正在使用C#express 2008创建一个简单的Windows窗体应用程序.我是一位经验丰富的C++开发人员,但我对C#和.NET几乎全新.

我目前正在使用设置设计器和代码存储我的一些简单应用程序设置,如下所示:

// Store setting  
Properties.Settings.Default.TargetLocation = txtLocation.Text;  
...  
// Restore setting  
txtLocation.Text = Properties.Settings.Default.TargetLocation;  
Run Code Online (Sandbox Code Playgroud)

现在我想存储一个ints(int[])数组,或者可能存储一个ints()列表List< int >作为设置.但是,我无法弄清楚如何做到这一点.我搜索了文档,stackoverflow和谷歌,我找不到如何做到这一点的体面解释.

基于我发现的稀疏示例,我的预感是我必须创建一个可序列化的类来包装我的数组或List,然后我将能够在设置设计器中使用该类型.但是,我不确定如何做到这一点.

c# arrays settings winforms

90
推荐指数
3
解决办法
6万
查看次数

在Qt中响应应用程序范围的"热键"

我有一个简单的Qt应用程序,我只想回答F12密钥,无论哪个小部件都有焦点.

是否有一些简单的信号或我可以挂钩的东西?

我想使用F12键来打开/关闭主窗口全屏.

qt keyboard-shortcuts

23
推荐指数
1
解决办法
9729
查看次数

使用窗口/视口翻转QPainter y轴

我正在使用Qt 4.7 QPainter将一些多边形等绘制到一个小部件中.我希望改变坐标系,使得(0,0)位于我的小部件的中心,并且x/y轴以标准的"笛卡尔"方式运行(即,y增加"向上"并且减少"下").换句话说,如果你知道我的意思,我希望坐标是"数学" - 而不是"计算机图形".:-)

我正在尝试使用setViewport()和setWindow()而不是自己做数学,因为能够直接用我的坐标调用draw方法会很好.

这是我到目前为止所得到的:

// Setup coordinates
double screenWidth = width();
double screenHeight = height();

double windowWidth = 100.0;
double windowHeight = (screenHeight / screenWidth) * windowWidth;

painter.setViewport(0, 0, screenWidth, screenHeight);
painter.setWindow(-(windowWidth / 2.0), -(windowHeight / 2.0), windowWidth, windowHeight);

// Draw stuff
painter.setPen(Qt::NoPen);
painter.setBrush(Qt::blue);
painter.drawRect(-10, -10, 20, 20);
Run Code Online (Sandbox Code Playgroud)

现在这个工作得很好,因为它在屏幕中间绘制了一个漂亮的蓝色方块.问题是,我不得不说左上角是(-10,-10).我希望能够制作它(-10,10),因为它就像笛卡尔坐标一样.

我试着搞乱setWindow/setViewport以获得这个"y轴翻转",但无济于事.这似乎是一个非常容易/基本的事情,但在搜索Qt文档和网络后,我无法弄明白!

谢谢,
克里斯

graphics qt qt4 coordinates qpainter

11
推荐指数
2
解决办法
9464
查看次数

在cmake构建中使用外部DLL

我正在为我的项目编写cmake脚本,我遇到了一个问题:

我的项目使用第三方库(FreeImage),它有自己的基于Makefile的构建系统.我可以通过简单地运行"make"(我正在使用gnuwin32)来构建FreeImage,它将使用MinGW构建FreeImage并生成:

FreeImage.lib
FreeImage.dll
Run Code Online (Sandbox Code Playgroud)

现在我的问题是双重的:

  1. 我想从我的cmake脚本执行"make".
  2. 我想链接到导入lib(FreeImage.lib),并确保将DLL复制到正确的位置,以便运行EXE.

我知道如何链接到LIB文件,但我在其余部分丢失了.

文件夹结构如下:

MyProject                     # main directory
MyProject/Libs/FreeImage      # FreeImage root directory
MyProject/Libs/FreeImage/Dist # This is where FreeImage outputs go (LIB and DLL)
Run Code Online (Sandbox Code Playgroud)

顺便说一句:我在Windows 7上运行.我打算用MSVC和MinGW构建我的项目.

谢谢!

编辑:我现在正在尝试使用ExternalProject_Add,如下所示:

ExternalProject_Add(
    FreeImage
    PREFIX ./Libs/FreeImage
    URL ./Libs/FreeImage
    BUILD_COMMAND make
)
Run Code Online (Sandbox Code Playgroud)

这让我成为那里的一部分,但并不完全有效......它试图为我配置东西并试图使用nmake ...呃

dll cmake freeimage

7
推荐指数
1
解决办法
4249
查看次数

使用ORM(如ODB)时处理类更改

我正在研究使用ORM(异议关系映射器)来允许我将我的C++对象持久化到SQLite数据库中.我目前正在通过CodeSynthesis考虑ODB.

请参阅:http://www.codesynthesis.com/products/odb/

看看ODB的文档,我没有看到一个唠叨问题的答案,即:

如果我创建一个类,将其持久保存到数据库中会发生什么,但随后在我的产品的更高版本中更改该类.当用户获得我的软件的新版本时,如何将旧数据正确加载到新版本的类中?

我之前看过boost :: serialize,它有处理这种"升级"的机制,但我想知道:

  1. 一般来说,如何在ORM工具中处理这个问题?
  2. 如何使用ODB专门做到这一点
  3. 有没有比ODB更好的ORM工具来处理这个问题?

c++ orm persistence odb-orm

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

纹理超过 128MB 时出现 OpenGL“内存不足”错误

我正在开发一个在具有 GMA500 图形硬件的 Intel Atom z530 上运行的嵌入式 OpenGL 图形应用程序。(据我所知,GMA500 本质上是一个 PowerVR,但我不确定)。我在 Ubuntu 9.10 Karmic Koala 上运行 Tungsten Graphics“Gallium”驱动程序。哦,你还应该知道我有 1 GB 的可用系统内存。

问题是:我的代码分配了一堆 512x512x32 纹理(每个纹理大约 1MB)。当我达到大约 118-120 个时,我从 OpenGL 收到“内存不足”错误,并且还在控制台上收到此消息:“错误:INTEL_ESCAPE_ALLOC_REGION 失败”。

这一点,再加上查看“顶部”时的简单测量,向我表明,我正在达到约 128MB 的纹理限制。奇怪的是:这个架构没有专用的视频内存,它是共享的。我可以确定 OpenGL 正在使用系统内存来处理纹理,因为我可以看到“空闲”内存在“顶部”下降。那么为什么我会收到“内存不足”错误呢?我希望 opengl 能够简单地使用更多可用的系统内存。为什么会有这样的硬性限制?有什么方法可以改变这个明显的“硬限制”的设置吗?

谢谢!克里斯


这是我从 glxinfo 的输出:

$ glxinfo

name of display: :0.0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
    GLX_ARB_multisample, GLX_EXT_visual_info, GLX_EXT_visual_rating, 
    GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_OML_swap_method, 
    GLX_SGI_make_current_read, GLX_SGIS_multisample, GLX_SGIX_hyperpipe, 
    GLX_SGIX_swap_barrier, GLX_SGIX_fbconfig, GLX_MESA_copy_sub_buffer
client …
Run Code Online (Sandbox Code Playgroud)

memory opengl ubuntu textures intel-atom

3
推荐指数
1
解决办法
6813
查看次数

如何将"清晰的颜色"推到属性堆栈上

我正在尝试使用glPushAttrib将"clear color"(使用glClearColor设置)推送到属性堆栈上.问题是:我不确定要向glPushAttrib发送哪个标志.

背景:我通常使用glClearColor设置我的应用程序的"背景"颜色.但是,在一些地方我必须更改glClearColor以清除我正在绘制的纹理.我想使用attrib堆栈来推送然后弹出"背景"颜色,这样它就不会搞砸了.

谢谢!

opengl stack attributes colors

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