小编Vio*_*ffe的帖子

Qt 4:如何设置QWidget的外边框,使其内部小部件不受影响?

我有一个很奇怪的问题.我有一个QWidgetQHBoxLayout它.布局包含两个QLabels.我想为整个小部件设置边框.我正在使用样式表:

 "padding: 10px;"
 "border-style: solid;"
 "border-width: 3px;"
 "border-radius: 7px;"
Run Code Online (Sandbox Code Playgroud)

但问题是:这种风格适用于两个QLabel并完全打破布局.我只需要外窗口有边框,而不是标签.有任何想法吗?

提前致谢!

css qt stylesheet qtstylesheets

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

MongoDB:查询单个随机文档的最有效方法是什么?

我需要随机选择一个集合中的文档(或者 - 从随机定位的"窗口"中获取少量连续文档).我找到了两个解决方案:12.第一个是不可接受的,因为我预计收集量很大,并希望最小化文档大小.第二个似乎无效(我不确定skip操作的复杂性).而在这里,人们可以找到查询文件具有指定索引的一提,但我不知道如何做到这一点(我使用C++驱动程序).

还有其他解决方案吗?哪个效率最高?

c++ mongodb

7
推荐指数
1
解决办法
493
查看次数

是否可以冲洗控制台(立即打印)?

我使用Firefox + Firebug进行一些Javascripting.我正在尝试登录的文本console.log不会立即出现在Firebug的控制台中.好像它在某个地方的缓冲区中堆积起来,然后以块的形式刷新到控制台.我有一个函数,可以log拨打几个电话.有时我只得到第一行,有时候 - 没有.但是,当我刷新页面时,我会看到整行.

我可以手动刷新控制台日志吗?

javascript firefox firebug console.log

7
推荐指数
1
解决办法
5236
查看次数

在Windows XP上使用120_xp工具集构建的C++应用程序:InitializeCriticalSectionEx无法位于动态链接库KERNEL32.dll中

我在VS 2013中使用120_XP工具集构建了我的应用程序.当试图在XP上运行它时,我收到一个错误:

无法在动态链接库KERNEL32.dll中找到过程入口点InitializeCriticalSectionEx

这是VS 2012的一个已知问题,并在Update 3中得到修复.但是我使用的是VS 2013,并且在2013年找不到任何解决方案,甚至没有提到这个问题.任何想法?

c++ windows-xp visual-studio-2013

7
推荐指数
0
解决办法
5985
查看次数

为什么不可能获得指向基类的受保护方法的指针?

class A {
public:
   A() {auto tmp = &A::foo;}
protected:
   void foo() {}
};

class B : public A {
public:
   B() {auto tmp = &A::foo;}
};
Run Code Online (Sandbox Code Playgroud)

A编译没问题.类B产生编译错误:

'A :: foo':无法访问类'A'中声明的受保护成员

为什么这样,理由是什么?有没有办法绕过这个(如果我需要指针回调std::function等)?

c++ inheritance

7
推荐指数
1
解决办法
142
查看次数

尝试使用urllib.retrieve通过URL下载文件:'module'对象没有属性'retrieve'

这是我的第一个Python脚本,所以我假设我做错了.但我无法在任何教程或示例中找到线索.以下代码(可以这么说):

import urllib

urllib.retrieve("http://zlib.net/zlib-1.2.8.tar.gz")
Run Code Online (Sandbox Code Playgroud)

抛出错误

AttributeError:'module'对象没有'retrieve'属性

我如何解决它?这是Python 3.3.

python python-3.x

7
推荐指数
1
解决办法
8952
查看次数

嵌套在类模板中的类的前向声明是否合法?

这个代码合法C++14/17吗?

template <class T1, class T2 >
class Foo
{
public:
    class sentry;
};

template <class T1,class T2 = int>
class Foo<T1,T2>::sentry
{
public:
    ~sentry() { }
};
Run Code Online (Sandbox Code Playgroud)

它与GCC 4.9.3一起编译,但在GCC 5.3中失败. 在线演示

我如何解决GCC 5.3的问题

c++ templates language-lawyer c++14 c++17

7
推荐指数
1
解决办法
169
查看次数

将"enum:int64_t"值写入std :: ostringstream会将其截断为int

此代码以MSVC编译器(v141工具集,/ std:c ++ 17)的意外方式运行:

#include <iostream>
#include <limits>
#include <sstream>
#include <stdint.h>

int main() {
    std::ostringstream ss;
    enum Enum : int64_t {muchos_digitos = std::numeric_limits<int64_t>::max() - 1000};
    ss << muchos_digitos;
    std::cout << ss.str();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

具体来说,它打印"-1001".只有经过多次头部刮擦和启用/W4警告级别后才发现原因:

警告C4305:'参数':从'main :: Enum'截断到'int'

但为什么会这样呢?实际上,调试器确认int调用了重载而不是long long,但为什么呢?我怎样才能在通用代码中规避这一点?我投muchos_digitosint64_t,但我收到的价值typename T.我可以弄清楚它是一个枚举,但我怎么知道它是一个强类型的枚举,我能找到它的基础类型吗?我不认为这是直接可能的......

GCC下的输出是正确的,但我需要代码才能与GCC,clang和MSVC三个一起使用.

在线演示

PS首先没有为我的项目设置/ W4是一个错误.我建议大家在MSVC和-pedantic-errorsGCC/clang中使用这个级别,当你在编写代码时在编译时注意到它时,它确实可以节省你的时间和bizzare错误以及令人惊讶的行为.

c++ enums overloading c++17

7
推荐指数
1
解决办法
92
查看次数

如何强制QGLWidget更新屏幕?

我正在使用Open GL绘制一个简单的场景.我已经将QGLWidget子类化并覆盖了paintGL().没有什么花哨的:

void CGLWidget::paintGL()
 {
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
    glClear(GL_COLOR_BUFFER_BIT);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    gluLookAt (120.0, 160.0, -300.0, 0.0 + 120.0, 0.0 + 160.0, 2.0 - 300.0, 0.0, 1.0, 0.0);
    glScalef(1.0f/300.0f, 1.0f/300.0f, 1.0f/300.0f);
    glClear(GL_DEPTH_BUFFER_BIT);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(80.0, width()/(double)height(), 5.0, 100000.0);

    glMatrixMode(GL_MODELVIEW);
    glBegin(GL_POINTS);
    glColor3f(1.0f,0.6f,0.0f);
    glVertex3d(x, y, z);

    // ...drawing some more points...

    glEnd();

 }
Run Code Online (Sandbox Code Playgroud)

我在主窗口中有一个计时器触发updateGL()GL小部件.我已经确认它会paintGL()被调用.但是,屏幕上的实际图片只是很少更新.即使我调整窗口大小,场景也不会更新.为什么这样,我怎么强迫它更新?

c++ opengl qt

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

为什么随机访问迭代器的算术运算符接受/返回int而不是size_t?

由于大多数操作都在std::vectorrequire/return上size_t- 这就是我用于索引的类型.但是现在我已经启用所有编译器警告来修复我知道的一些已签名/未签名的转换问题,这条消息让我感到惊讶:

警告C4365:'参数':从'size_t'转换为'__w64 int',有符号/无符号不匹配

它是由以下代码生成的:

std::vector<int> v;
size_t idx = 0;
v.insert(v.begin() + idx + 1, 0);
Run Code Online (Sandbox Code Playgroud)

我有很多其他类似的消息表明迭代器的算术运算符接受并返回int.为什么不size_t呢?修复所有这些消息是一件痛苦的事,并不能使我的代码更漂亮!

c++ iterator

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