小编RED*_*AIR的帖子

如何禁用Qt QMessageBox播放的声音?

我正在使用Qt 4.8使用的Windows应用程序

QMessageBox::information
QMessageBox::warning
...
Run Code Online (Sandbox Code Playgroud)

当调用任何函数时,Windows默认播放声音.我的客户对此感到恼火,并希望在不更改Windows设置的情况下永久禁用此功能.

如果这声音怎么能摆脱?

我发现它是从中调用的

void QAccessible::updateAccessibility()
Run Code Online (Sandbox Code Playgroud)

但到目前为止我还没有找到一种方法来禁用它.

windows qt

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

为什么多线程会占用我的记忆力

我有一个Windows C++应用程序,其中std::hash_set包含500个条目,每个条目包含32个字节.如果我在一个单独的(很多)线程中创建hash_set,它根据ProcessExplorer使用> 1 GB.当我释放清单时,我看到了这一点.如果我在主线程中创建它,它将使用200 MB.这种现象仅适用于我的应用程序的32位版本.它不适用于x64版本.我使用双四核与Win XP x64.它不是内存泄漏.一切都在clear()上释放.

我的猜测:Windows 32.Bit不是为许多线程/多核构建的.

你有什么好处?

c++ windows multithreading

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

如何仅使用粘合剂在地图中找到值

在地图的第二个值中搜索我使用如下内容:

typedef std::map<int, int> CMyList;
static CMyList myList;

template<class t> struct second_equal
{
    typename typedef t::mapped_type mapped_type;
    typename typedef t::value_type value_type;

    second_equal(mapped_type f) : v(f)   {};
    bool operator()(const value_type &a) { return a.second == v;};

    mapped_type v;
};
...    
int i = 7;
CMyList::iterator it = std::find_if(myList.begin(), myList.end(), 
                                    second_equal<CMyList>(i));
Run Code Online (Sandbox Code Playgroud)

问题:如何在不提供自写模板的情况下在一行中进行此类查找?

c++ stl

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

使用GDI +打印无效

很久以前,我将GDI +添加到我的Win32应用程序中以绘制渐变.考虑到混合GDI和GDI +输出,我解决了一些问题,一切正常.

现在我开始使用GDI +进行打印,但所有对GDI +的调用似乎都被忽略了,这在屏幕上运行良好.我仔细检查了没有裁剪区域.坐标也在纸上.我还删除了所有GDI输出以进行测试.仍显示空白页面.我试过几台打印机.使用GDI +打印样本进行的测试没有问题.我将我的应用程序中使用的代码添加到示例中,它也可以正常工作.

任何的想法?

c++ winapi gdi+

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

我可以为我的 64 位应用程序使用 32 位 ODBC 驱动程序吗

我有一个进行 ODBC 连接的 Win32 应用程序。我们连接时SQLDriverConnect() 会显示一个对话框来选择数据源。在 x64 版本中,对话框显示并提供 2 个不同的 32 位 MS ACCESS 驱动程序。当我选择其中之一时,在 32 位版本中,我会看到一个打开文件对话框来选择 .mdb 文件。在 64 位版本中,此时对 SQLDriverConnect() 的调用返回 -1。

SQLError()返回:“[Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序”

通常是否可以从 64 位可执行文件使用 32 位 ODBC 驱动程序?为什么会显示这些驱动程序?据我所知,到目前为止还没有 64 位 MS Access OBDC 驱动程序。我能做些什么?

winapi odbc 32bit-64bit

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

如何从 Qt QGraphicsTextItem 中删除选择绘图

我正在 Windows XP 上使用 QGraphicsScene 开发 Qt 4.8 应用程序。当用户双击 QGraphicsTextItem 时,我调用

textItem->setTextInteractionFlags(Qt::TextEditorInteraction);
Run Code Online (Sandbox Code Playgroud)

在下一次选择更改时我打电话

textItem->setTextInteractionFlags(Qt::NoTextInteraction);
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我找不到办法删除编辑中剩余的背景颜色的反转。在下面的屏幕截图中,我首先双击第一个文本项并选择字符“2927”。然后我点击第二个测试项目并选择“est”。我找不到摆脱第一个文本项中仍然倒置的“2927”的方法(尽管它不再处于编辑模式)。

在此输入图像描述

我也尝试打电话:

    textItem->textCursor().clearSelection();
    textItem->update();
    textItem->setTextInteractionFlags(Qt::NoTextInteraction);
    textItem->clearFocus();
Run Code Online (Sandbox Code Playgroud)

但他的行为根本没有改变。

所以现在我找到了一个解决方法:

    QString s = textItem->toPlainText();
    textItem->setPlainText("");
    textItem->setPlainText(s);
    textItem->setTextInteractionFlags(Qt::NoTextInteraction);
Run Code Online (Sandbox Code Playgroud)

我不喜欢这样,但它有效。

有什么更清洁的解决方案的提示吗?

windows qt selection qgraphicsscene

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

intel ++:警告#1563:取一个临时的地址 - 误报?

我上了这堂课:

class myClass
{
private:
      struct tm minDate, maxDate;
public:
      myClass();

      struct tm GetMinDate()  {return minDate;};
      struct tm GetMaxDate()  {return maxDate;};
};
Run Code Online (Sandbox Code Playgroud)

和这个函数调用

SetMinMaxDate(struct tm *MinDate, struct tm *MaxDate);
Run Code Online (Sandbox Code Playgroud)

以下代码

myClass myInstance;
SetMinMaxDate(&myInstance.GetMinDate(), &myInstance.GetMaxDate());
Run Code Online (Sandbox Code Playgroud)

效果很好,MSVC 2010和2005没有生成任何警告.但是,如果我使用英特尔C++编译它我得到警告

warning #1563: taking the address of a temporary
Run Code Online (Sandbox Code Playgroud)

根据这个相关的线程

临时对象的生命周期(也称为rvalue)与表达式相关联,并且在完整表达式的末尾调用临时对象的析构函数

SetMinMaxDate复制用指针传递的内容.指针本身不存储.因此,在SetMinMaxDate返回之前,2个临时tm元素应该是有效的.

这段代码中是否存在问题,或者这是英特尔C++的误报?

编辑: 我发现了另一个非常有趣的帖子,说明了这种行为的原因: 为什么将rvalue的地址临时取出是非法的?

c++ icc

3
推荐指数
2
解决办法
513
查看次数

Q图像​​抖动质量

我们目前正在使用商业库进行 Windows 图像渲染。当显示尺寸小于图像原始尺寸的单色图像时,此库会对图像进行灰度处理,以便仍然可以识别大部分图像:

在此处输入图片说明

现在我用 Qt 4.8 应用程序尝试了同样的方法。基本上所做的是调用:

QImage mImage;
...
mImage.load(...);
...
painter.drawImage(paintRect, mImage, mImage.rect()); 
Run Code Online (Sandbox Code Playgroud)

其中paintRect 小于mImage.rect()。效果很好,但输出不太令人满意:

在此处输入图片说明

我尝试了几个渲染提示(QPainter::SmoothPixmapTransform、Antialiasing、HighQualityAntialiasing)并使用

mImage = mImage.convertToFormat(QImage::Format_RGB32);
Run Code Online (Sandbox Code Playgroud)

QPainter::SmoothPixmapTransform 似乎稍微改善了输出(它包含在屏幕截图中)。所有其他的事情似乎都没有改变任何东西。

我错过了什么吗?

如何改善尺寸减小的图像的显示?

windows qt image qimage

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

如何在Win32中找到资源泄漏?

运行几个小时后,我的应用程序无法创建新的字体对象:

CreateFontIndirect()返回NULL.

我知道如何找到内存泄漏(即使用并行检查器或其他分析器 - 其中大多数包括泄漏检测).但是如何在Win32中找到资源泄漏?

c++ windows memory-leaks visual-studio-2005

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

RAM内存重新分配 - Windows和Linux

我正在开展一个涉及优化系统内能耗的项目.该项目的一部分在于根据位置分配RAM内存,即为程序分配尽可能彼此接近的内存段.有没有办法我可以知道我分配的内存的位置到底在哪里(内存芯片),我也想知道是否有可能以确定的方式强制分配.我对Windows和Linux都很感兴趣.此外,该项目将在Java和.NET中实现,因此我对托管API感兴趣以实现此目的.

[我知道这可能不会转化为直接的能源消耗减少,但该项目应该是一个概念证明.]

.net java memory-management

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

如何避免GoogleAppEngine DataStore延迟?

我是App Engine的新手并编写了一个示例App.如果我创建或更新实体:

Entity record = new Entity(...);
... set properties
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
datastore.put(record);
Run Code Online (Sandbox Code Playgroud)

然后重定向到显示新的或更新的实体的页面

resp.sendRedirect("MainPage.jsp");
Run Code Online (Sandbox Code Playgroud)

执行以下代码的位置

DatastoreService datastore =
DatastoreServiceFactory.getDatastoreService();   
Query query = new Query(...).addSort(..., Query.SortDirection.DESCENDING); 
List<Entity> entities = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(20));
Run Code Online (Sandbox Code Playgroud)

新记录不在列表中.页面已更新(如显示的时间戳所示),但新记录或现有记录的修改仅在刷新页面后延迟几秒钟后显示.

如何避免这种情况?DataStore可能不适合这样的事情吗?

我正在使用GAE和Windows XP 64的Eclipse本地测试环境.

java google-app-engine jsp servlets

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

所有Google API的完整列表?

有许多非常有趣的Google API,我不时会偶然发现一个新的API(即Google Geo Code APIGoogle Elevation API).

我在哪里可以找到所有Google API的完整列表?我还没找到.

编辑2013/Sep/13: 以下链接似乎已过时,因为它们不再显示完整列表.我在https://developers.google.com/apis-explorer/#p/上找到了另一个 包含有趣内容的列表- 但这个列表 似乎并不完整.

任何更新的链接表示赞赏.

api

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

如何并行化此求解器代码

我正在尝试优化和并行化一些代码,这些代码在带有链接和节点的图形结构中进行模拟.一个主要的热点是这样的循环:

void ExecuteAll()
{
    for(long i = TotalCount(); i >= 1; i--)
    {
        long k    = linkOrder[i];
        long link = firstLink[k];
        if (link == 0)
            continue;

        double d = 0.;
        for(; link != 0; link = nextLink[link])
        {
            long kk  = getNode(link);
            d  += fak[link]*res[kk];
        }
        d += res[k];
        double d2 = d/fak2[k];
        res[k]   = d2;
        res2[k] += d2;
    }
}
Run Code Online (Sandbox Code Playgroud)

我通过实现这样的类来重写这个以使用多个线程:

class myDemoClass
{    
    bool volatile *isDone;
public:

    void ExecuteSlice() 
    {   
        for(long i = TotalCount() - mThreadIndex; i >= …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm performance multithreading

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