我使用QLabel向用户显示更大,动态变化的QPixmap的内容.根据可用空间,使这个标签更小/更大会很好.屏幕尺寸并不总是与QPixmap一样大.
如何修改QLabel QSizePolicy和sizeHint()QLabel以调整QPixmap的大小,同时保持原始QPixmap的宽高比?
我无法修改sizeHint()QLabel,设置minimumSize()为零无济于事.hasScaledContents()QLabel上的设置允许增长,但是打破了宽高比...
子类化QLabel确实有帮助,但是这个解决方案只为一个简单的问题添加了太多的代码......
任何聪明的提示如何在没有子类化的情况下完成此任务?
我正在为MATLAB/Octave中的一些VHDL代码开发一个验证工具.因此,我需要生成"真正"溢出的数据类型:
intmax('int32') + 1
ans = -2147483648
Run Code Online (Sandbox Code Playgroud)
稍后,如果我可以定义变量的位宽,那将会很有帮助,但现在这不是那么重要.
当我构建一个类似C的例子时,变量增加直到它小于零,它会永远旋转:
test = int32(2^30);
while (test > 0)
test = test + int32(1);
end
Run Code Online (Sandbox Code Playgroud)
我尝试的另一种方法是自定义"溢出" - 例程,每次更改数字后都会调用它.这种方法非常缓慢,不实用,根本不适用于所有情况.有什么建议?
我正在建立一个关于某种库的文档,它包含一个C/C++部分和一个VHDL部分,以及一些有指导性的doxygen页面.他们必须被置于一个独立的群体中.到目前为止,一切都很有效,漂亮而蓬松......
但是,如果我想通过同时使用OPTIMIZE_OUTPUT_VHDL = YES和优化c子目录的输出来优化vhdl子目录中的输出OPTIMIZE_OUTPUT_C = YES呢?
据我所知,在我的情况下使用doxygen-tags并不是最佳的,因为它在每个子目录中引入了新的doxyfile.conf文件,并在每个子目录中独立运行doxygen.所以,这样做我不能将两个部分(c + vhdl)放在同一组的不同子组中,并且两个部分之间的链接是不可能的.此外,整个模块应该是"自包含的",可以包含在更大的文档中,而不需要在此解决方案中涉及特殊的构建结构......
你会怎么做?
我正在研究用于Qt的Gui-Module来绘制基于Qwt的数字示波器中的实时测量.到目前为止一切都可以,但也许还有一些功能需要添加;-)
目前,数据在QVectors中按列存储,并在一个单独的QObject中与一个全局timeReference QVector一起存储.因此,可以逐行丢弃数据,以便仅将Meusurement保持到某个过去.所有QVectors总是具有相同的长度.然后,可以在QwtPlot中按时间正确地绘制完整数据.
我想更多地封装数据存储,以便更加独立于测量.因此,为每个测量添加一个单独的时间坐标列表并将它们放在一个单独的QObject中是很好的,它接受和传递数据.然后将有10或20个这样的QObject,每个数据通道一个,它们由QwtPlot上的上覆QObject单独绘制.
现在,数据可以是动态的 - 无论外部是否可以看到数据在两者之间的存储,更改或丢弃方式.
我的问题是:这很聪明吗?20或30个QObjects包含每10000个测量值,10000个时间值,加上一个相似大小的单独存储区域(动态填充),其中一个子集ob数据被提供用于绘图...?将QObject中的每个测量值作为信号接收是否合理,在1kHz左右发射?信号/槽-一部分来自制造的想法每后面的对象一个的QThread,并执行实时过滤,像上的数据低通或FFT - 因此,信号/槽连接是方便的CONTROLL输出在多线程环境?
如何在我的OBjects中有效存储数据?我正在考虑两个QList,一个用于时间,一个用于珍贵数据.然后动态分配两个普通的双数组用于动态访问,其指针与长度一起放在结构中并由accessData(pastTime)方法返回.动态存储器由从"现在"到过去的某个点的timeVal /测量组合填充,可由信号设置.QObject中的互斥体保护的所有东西都很脆弱.
当丢弃旧值时,必须从头开始搜索QList,以获得足够年轻的第一个值,保留在该索引之前的那个值.由于其upperBound()函数,QMap是否更智能?我认为隐藏的开销不值得.
一个专业人员将如何很好地,有效地或没有任何麻烦地尝试解决这个问题?我应该知道的特殊Qt功能?或者甚至是那里的免费解决方案?无论如何,这样一个基本问题的文字很多......感谢您在这里阅读;-)
提前致谢
马文
edith:在stijns评论之后做了一些清理.
我希望优化现有的Makefile.它用于为给定目录中的每个日志文件创建多个图(使用Octave),使用脚本文件为每个以logfilename作为参数的图.在片刻中,我对每种可用的绘图都使用一个单独的规则,手写调用Octave,给出特定的scriptfile/logfile作为参数.
如果每个绘图都有"他的"八度脚本作为依赖项(当然还有日志文件),那将是很好的,因此如果他的脚本被更改,则只重新生成一个绘图.
由于我不想输入那么多,我想知道如何通过仅使用一条通用规则来构建"一个"情节来简化这一点?
为了更清楚:
我想到的第一件事:
%1_%2.png: %1.log
$(OCTAVE) --eval "plot$<2('$<1')"
Run Code Online (Sandbox Code Playgroud)
但似乎不允许这样做.有人能给我一个暗示吗?
我正在将一些狡猾的C++ Windows代码移植到Linux上,它在每个类中都使用了"open"和"close"的功能......非常糟糕的风格,还是?幸运的是,这不是Windows中的问题,因为他们的系统调用被命名为不同.
当我尝试调用systemcalls open()或close()时,我收到一些关于"没有匹配函数调用class:open()"的编译器错误.我不能在整个代码中重命名所有名为"class :: open"和"class :: close"的函数,我必须使用open()和close(),因为我正在使用串行端口.
所以我的问题是:我怎么能告诉编译器,我打开哪个?如何在C++中转义或隐藏类的命名空间?