如何在Qt中检查给定路径中是否存在文件?
我目前的代码如下:
QFile Fout("/Users/Hans/Desktop/result.txt");
if(!Fout.exists())
{
eh.handleError(8);
}
else
{
// ......
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行代码时,handleError即使我在路径中提到的文件不存在,它也没有给出指定的错误消息.
我有一个应用程序QGraphicsView,在屏幕中间有一个窗口.我希望能够使用鼠标滚轮滚动放大和缩小.
目前我已经重新实现QGraphicsView并覆盖了鼠标滚动功能,因此它不会滚动图像(就像默认情况下那样).
void MyQGraphicsView::wheelEvent(QWheelEvent *event)
{
if(event->delta() > 0)
{
emit mouseWheelZoom(true);
}
else
{
emit mouseWheelZoom(false);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当我滚动时,如果鼠标滚轮向前移动,如果鼠标滚轮向后,我发出的信号为真.
然后我将这个信号连接到处理我的GUI内容的类中的插槽(缩放功能见下文).现在基本上我认为我的缩放功能根本不是最好的方法我已经看到一些人使用overriden wheelevent函数设置比例的例子,但我真的找不到完整的答案.
所以相反,我已经做到了这一点,但它无论如何都不是完美的所以我正在寻找这个稍微调整一下或者在轮子事件功能中使用比例的工作示例.
我初始化m_zoom_level到0在构造函数中.
void Display::zoomfunction(bool zoom)
{
QMatrix matrix;
if(zoom && m_zoom_level < 500)
{
m_zoom_level = m_zoom_level + 10;
ui->graphicsView->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
matrix.scale(m_zoom_level, m_zoom_level);
ui->graphicsView->setMatrix(matrix);
ui->graphicsView->scale(1,-1);
}
else if(!zoom)
{
m_zoom_level = m_zoom_level - 10;
ui->graphicsView->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
matrix.scale(m_zoom_level, m_zoom_level);
ui->graphicsView->setMatrix(matrix);
ui->graphicsView->scale(1,-1);
}
}
Run Code Online (Sandbox Code Playgroud)
正如你在上面看到的那样,我正在使用QMatrix和缩放并将其设置为Graphicsview并将转换锚点设置为鼠标下方,但是如果我滚动加载它有时不能正常工作它只会开始放大(我认为这与int循环或其他东西有关).
正如我所说,帮助这个或鼠标下的规模的一个很好的例子将是伟大的.
在Javascript中,给定id元素(String格式),如何检查id元素是否引用下拉列表元素或文本输入元素?
true如果id引用下拉列表(<select>)元素或文本输入元素,则该函数应返回false.
当数组公式的结果是数字时,我发现通常很容易找到合适的方法将数组折叠成单个结果.但是,当数组公式的结果是文本时,我发现很难以提供单个所需结果的方式操作公式.简而言之,有没有一种方法可以操作我忽略的文本结果数组?请参阅此问题的底部,了解无法使用的最终所需公式,并请求解决方案.
*编辑 - 再次阅读之后,我可以交替总结我的问题:有没有办法从'公式数组结果'访问多个文本元素,而无需单独选择(例如:使用INDEX)?
数组公式工作的示例,其中结果数组是数字值
(1)示例1:假设列A行1-500是产品ID的列表,格式为xyz123,列B行1-500表示该产品的总销售额.如果我想查找具有最高销售额的产品的销售额,其中ID的最后3位数字高于400,我可以使用像这样的数组公式(使用CTRL + SHIFT + ENTER而不是ENTER确认):
=MAX(IF(VALUE(RIGHT(A1:A500,3))>400,B1:B500,""))
Run Code Online (Sandbox Code Playgroud)
(2)示例2现在假设列B包含产品名称而不是Sales.我现在想简单地返回第一个名称,该名称与产品ID的最后3个数字的标准匹配> 400.这可以按如下方式完成:
=INDEX(B1:B500,MIN(IF(VALUE(RIGHT(A1:A500,3))>400,ROW(A1:A500),"")))
Run Code Online (Sandbox Code Playgroud)
这里,我做了一点操作,所以公式[IF(RIGHT(A1:A500,3 ...)的实际数组部分返回一个值结果[cellsA1:A500的ROWs,其中最后3位是因此我可以使用MIN来显示匹配的第一个ROW#,然后我可以在常规INDEX函数中使用该折叠结果.
(3)示例3作为最后一个示例,请参阅此处对类似问题的讨论[比以下摘要示例更深入,与此问题没有直接关系]:https://stackoverflow.com/a /五百○九万○二十七分之三千一百三十二万五千九百三十五
现在假设您需要所有产品名称的列表,其中产品ID的最后3位数字> 400.据我所知,这不可能在单个Cell中完成,必须通过将每个单独的结果放在后续单元格上来完成.例如,可以在C1中放置以下公式并向下拖动10行,然后显示前10个产品名称,其中产品ID的最后3位数> 400.
=INDEX($B$1:$B$500,SMALL(IF(VALUE(RIGHT($A$1:$A$500,3))>400,ROW($A$1:$A$500),""),ROW()))
Run Code Online (Sandbox Code Playgroud)
数组公式不起作用的示例,其中结果数组是文本值
现在假设我想在示例3中获取结果,并对它们执行一些文本操作.例如,假设我想将它们连接成一个单独的文本字符串.下面的方法不起作用,因为concatenate不会将这样的结果数组作为可接受的参数.
=CONCATENATE((IF(VALUE(RIGHT($A$1:$A$500,3))>400,ROW($B$1:$B$500),"")))
Run Code Online (Sandbox Code Playgroud)
所以问题是:有没有人知道如何使这最后一个公式起作用?或者,如何使一个公式工作,它接受一个文本结果数组,并将其转换为"可用范围"[因此它可以插入上面的连接],或者可以立即使用文本参数进行操作[例如mid ,搜索,替代等] 现在,我能看到的唯一方法是使用上面的示例3,然后进一步说,例如,Concatenate(C1,C2,C3 ...... C10).
我在 Microsoft Excel 中准备了一个 VBA 项目,其中包含许多用户窗体和宏。我想导出所有文件,但似乎只能一个一个地导出,这会花费我很长时间。
有没有办法导出整个项目?谢谢!
我正在将 Android 应用程序迁移到 Retrofit 2.0。我有一个自定义的 ErrorHandler 扩展,RetrofitError这样我就可以对不同的 Http 错误做出反应。
现在我明白我必须创建一个自定义CallAdapterFactory. 我使用了这里ErrorHandlingCallAdapter提供的示例。
我的结果CallAdapter几乎是相同的代码,但如果需要,我也可以发布我的代码。
发生的情况是,当我使用 this 时CallAdapterFactory,主线程上没有发生回调。当我android.view.ViewRootImpl$CalledFromWrongThreadException尝试更新用户界面时(我总是需要这样做)。我也不想总是在回调中使用 runOnUIThread 包装我的代码。
我不知道这是否有帮助,但是当我登录Thread.currentThread().getName()回调时,它返回 OkHttp。
我只想使用 GPS 获取位置。我不想在这个应用程序中使用互联网和 GPRS。我的代码如下;告诉我我哪里错了。
代码:
package com.getlocation;
import android.app.Activity;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class UseGps extends Activity {
/** Called when the activity is first created. */
private String provider;
LocationManager locationManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); /*
* Use the LocationManager class to
* obtain GPS locations
*/
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE); …Run Code Online (Sandbox Code Playgroud)