小编ere*_*der的帖子

Pimpl成语不使用动态内存分配

我们想在项目的某些部分使用pimpl习语.项目的这些部分也恰好是禁止动态内存分配的部分,这个决定不在我们的控制范围内.

所以我要问的是,在没有动态内存分配的情况下,有没有一种干净又好的方法来实现pimpl习语?

编辑
以下是一些其他限制:嵌入式平台,标准C++ 98,没有外部库,没有模板.

c++ embedded pimpl-idiom dynamic-memory-allocation

28
推荐指数
2
解决办法
5554
查看次数

QGraphicsView和eventFilter

这已经困扰了我两天多了,所以我想我应该问.我在Win7上使用Qt 4.5.3(用VC2008编译).

我有MyGraphicsView(继承QGraphicsView)和MyFilter(继承QObject)类.

当我将MyFilter对象作为事件过滤器安装到MyGraphicsView时,鼠标事件在传递到MyGraphicsView 传递给MyFilter,而Key事件在传递给MyGraphicsView 之前传递给MyFilter.

在第二种情况下,我安装MyFilter对象作为事件过滤器MyGraphicsView->视口()(其是非标准QGLWidget来绘图),鼠标事件被传递到MyFilter 之前它们被输送到MyGraphicsView,而关键事件被传递到 MyGraphicsView .

事件应该在传递给实际对象之前传递给事件过滤器,为什么会发生这种情况呢?我该怎么做才能确保这个订单?

提前致谢.最好的祝福.

events qt qt4 qgraphicsview

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

Qt同时使用多个字体

我想在我的软件中使用三种字体:

  • FontA:包含拉丁语,希腊语,Cryllic字符
  • FontB:包含韩文字符
  • FontC:包含日文,中文字符

这些字体没有重叠.

我想设置我的应用程序,以便所有这些字体一次使用,因为来自不同语言的字符可能出现在我的软件中的相同上下文中.

如果在FontA中找到一个字符,请使用它.否则,查看FontB,如果找到则使用它.看看FontC作为最后的手段,如果找到,使用它,否则什么都不做.

如何设置Qt以这种方式运行?

(我的环境是嵌入式linux,Qt 4.8)

PS:我尝试过QFont :: insertSubstitution,但是在系统上没有安装FontA的情况下使用它,所以在我的情况下并没有真正帮助.
PPS:将这些字体合并为单一字体是不可能的,因为它们是专有字体.

embedded fonts qt

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

通过引用传递比通过值更昂贵

是否存在传递引用比C++中的传值更昂贵的情况?如果是这样,那会是什么情况?

c++ pass-by-reference pass-by-value

9
推荐指数
3
解决办法
3724
查看次数

基于参数值的Qt图信号

我知道我可以用来QSignalMapper根据连接调用具有不同参数的插槽.我想要实现的是有点不同.

我们在应用程序中使用插件,不同的插件负责不同类型的对象.我们将多个插槽连接到主应用程序发出的一个信号,每个插槽都在不同的插件中实现.信号的一个参数是QString指示与信号相关联的对象的类型.目前,我们正在插槽中检查此参数,并在插件处理类型时继续.这有一个缺点,每个插件都做这个检查,我想尽可能避免这种情况.

我想将所有插槽连接到同一个信号,并且当发出信号时,根据QString参数的值,只调用相应的插槽,类似于QSignalMapper但是以不同的方式.

有没有内置的机制来做到这一点?如果没有,关于我如何实现这一点的任何想法?

先感谢您.

c++ mapping qt signals-slots

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

将财产绑定到另一个财产

我有嵌套的组框,它在逻辑上代表我的应用程序中的嵌套数据结构.假设我有这样的结构:

Dev1  
- CDev1  
- CDev2  
    - ICDev1  
    - ICDev2
Run Code Online (Sandbox Code Playgroud)

我有复选框来启用/禁用每个Devs.我想将子复选框的CheckState绑定到父复选框的CheckState.我希望机制像这样工作:当我检查CDev2时,ICDev1和ICDev2会自动检查.但是当我取消选中ICDev1时,CDev2会保持自己的状态.基本上,我希望将这些事件传播给子节点而不是父节点,就像单向绑定一样.

我正在使用.Net 2.0 SP2.我不知道这是否可能,因此如果你向我展示一些关于此的指示,我会很高兴.如果不可能,我将为所有复选框实现事件处理程序.

c# binding .net-2.0

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