我刚刚开始研究一个新的C++/Qt项目.它将是一个基于MDI的IDE,带有停靠的小部件,用于文件树,对象浏览器,编译器输出等等.但是到目前为止,有一件事让我烦恼:我无法弄清楚如何以编程方式QDockWidget缩小.例如,此代码段创建了我的底部停靠窗口"构建信息":
m_compilerOutput = new QTextEdit;
m_compilerOutput->setReadOnly(true);
dock = new QDockWidget(tr("Build Information"), this);
dock->setWidget(m_compilerOutput);
addDockWidget(Qt::BottomDockWidgetArea, dock);
Run Code Online (Sandbox Code Playgroud)
启动时,我的程序看起来像这样(记住开发的早期阶段):

但是,我希望它看起来像这样:

我似乎无法实现这一点.QDockWidget上的Qt参考说明了这一点:
应在子窗口小部件中实现自定义大小提示,最小和最大大小和大小策略.QDockWidget将尊重它们,调整自己的约束以包含框架和标题.不应在QDockWidget本身上设置大小约束,因为它们会根据是否停靠而更改
现在,这表明执行此操作的一种方法是子类QTextEdit并覆盖该sizeHint()方法.但是,我不想仅仅为此目的这样做,我也没有尝试过它来找到一个有效的解决方案.
我试过打电话dock->resize(m_compilerOutput->width(), m_compilerOutput->minimumHeight()),m_compilerOutput->setSizePolicy()用它的每个选项打电话......到目前为止,没有任何东西影响了它的大小.就像我说的,我更喜欢在几行代码中使用一个简单的解决方案来创建一个只是为了改变的子类sizeHint().所有建议表示赞赏.
我想使用grails jasper插件添加到JasperReports 3.7.2中的新表组件.我发现这个新组件对生成表很有用.
我已经定义了Table数据集1和一些字段(例如:$ F {name}),问题,我的所有字段值都是null.我还定义了字段(没有附加表),我得到了值.
这是我的表格代码:
<subDataset name="Table Dataset 1">
<field name="name" class="java.lang.String"/>
<field name="signal" class="java.lang.Double"/>
...
</subDataset>
<componentElement>
<reportElement key="table" style="table" x="0" y="0" width="802" height="50"/>
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="Table Dataset 1">
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource(1)]]></dataSourceExpression>
</datasetRun>
<jr:column width="90">
<jr:columnHeader style="table_CH" height="30" rowSpan="1">
<staticText>
<reportElement x="0" y="0" width="90" height="30"/>
<textElement/>
<text><![CDATA[Name]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="table_TD" height="20" rowSpan="1">
<textField>
<reportElement x="0" y="0" width="90" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
...
Run Code Online (Sandbox Code Playgroud)
我想,我的问题是由于这部分(我正在使用JREmptyDataSource):
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource(1)]]></dataSourceExpression>
Run Code Online (Sandbox Code Playgroud)
但是如何才能获得<MODEL_DATA>Table组件?
(例如:chain(controller:'jasper',action:'index',model:[data:<MODEL_DATA>],params:params))
在"标准"笔记本电脑x86硬件上计算MD5散列的CPU密集程度是否比SHA-1或SHA-2少?我对一般信息感兴趣,不是特定于某个芯片.
更新: 在我的情况下,我有兴趣计算文件的哈希值.如果文件大小很重要,我们假设它是300K.
使用diff来显示两个文件之间的百分比差异的好方法是什么?
例如,如果文件有100行,而副本有15行已更改,则diff-percent将为15%.
在不同于Windows的平台上,您可以轻松使用char *字符串并将其视为UTF-8.
问题是在Windows上,您需要使用wchar*字符串(W)接受和发送消息.如果您将使用ANSI函数(A),则不支持Unicode.
因此,如果您想编写真正的可移植应用程序,则需要在Windows上将其编译为Unicode.
现在,为了保持代码清洁,我想看看处理字符串的推荐方法是什么,这种方法可以最大限度地减少代码中的丑陋.
字符串的类型可能需要:std::string,std::wstring,std::tstring,char *,wchat_t *,TCHAR*,CString(ATL一个).
您可能遇到的问题:
cout/cerr/cin 和他们的Unicode变种 wcout,wcerr,wcinstrcmp,wcscmp和_tcscmp._T()宏填充代码.您认为哪种方法最好?(欢迎举例)
就个人而言,我会采取一种std::tstring方法,但我想看看如何对他们必要的转换做些什么.
我需要为我的Windows XP及更新版本的软件创建一个安装程序.是否有任何机制可以单独在Linux机器上执行此操作?(我正在运行ubuntu,但我猜这不是一个节目阻止者).
我有一个愚蠢的问题,
如果我想在支持CSS3的一些东西的浏览器中为一个元素添加圆角,我必须为每个浏览器重复几次样式,因为它是不同的?
例如:
-moz-border-radius: 12px; /* FF1+ */
-webkit-border-radius: 12px; /* Saf3+, Chrome */
border-radius: 12px; /* Opera 10.5, IE 9 */
Run Code Online (Sandbox Code Playgroud)
这意味着,我必须为这个半径边框添加3种样式,不是吗?
我已经为一个讲座中的一些文件格式(ARFF)编写了一个动手的递归纯python解析器.现在运行我的运动提交非常缓慢.到目前为止,我的解析器花费的时间最多.它消耗了大量的CPU时间,HD不是瓶颈.
我想知道在python中编写解析器的高效方法是什么?我宁愿不用C重写它.我试图使用jython,但这会降低性能!我解析的文件部分很大(> 150 MB),行很长.
我当前的解析器只需要预览一个字符.我会在这里发布消息来源,但我不知道这是不是一个好主意.在所有提交截止日期尚未结束之后.但是,本练习的重点不是解析器.您可以选择要使用的任何语言,并且已经有一个Java解析器.
注意:我有一个x86_64系统,所以psyco(似乎也是PyPy)是没有选择的.
我必须从PowerShell脚本中停止浏览器,我将它通过管道输入
Stop-Process -Force
Run Code Online (Sandbox Code Playgroud)
但是,这是非常突然的.重新启动浏览器时,它会检测到它没有干净地关闭,并尝试重新启动上一个会话.有什么方法可以告诉它优雅地关闭自己?("我们有两种方法可以做到这一点......")