小编cma*_*t85的帖子

SVN to Git migration - undefined author,但确实如此

之前已经提出过类似的问题(就像这个问题一样),但答案并没有为我解决.我的作者文件看起来像这样:

cmannett85 = cmannett85 <cmannett85@###>
cbamber85 = cmannett85 <cmannett85@###>
www-data = cmannett85 <cmannett85@###>
Run Code Online (Sandbox Code Playgroud)

而我得到的错误是;

Author: cmannett85 not defined in users.txt file
Run Code Online (Sandbox Code Playgroud)

此错误发生在大约第1500次提交时,其他作者条目正常,因此条目的基本结构必须正确.我已经在SO上看到的大多数问题围绕着SVN用户名有一个空格预先/附加到它们,但是从粘贴的错误中可以看出 - 没有多余的空白区域.

我也认为可能是因为我为同一个用户名映射了一个用户名,所以我更改了Git用户名,但没有区别.我甚至尝试在Windows和Unix格式之间切换行结束,但再次没有变化.

我使用这个调用操作:

$ git svn clone https://subversion.assembla.com/svn/#### --authors-file=users.txt --no-metadata -s ####
Run Code Online (Sandbox Code Playgroud)

我尝试删除--no-metadataarg,但没有区别.任何人都可以看到我哪里出错了?

UPDATE

按照Lazy Badger的建议,我跑了:

$ svn log --xml | grep author | sort -u | perl -pe 's/.>(.?)<./$1 = /'
Run Code Online (Sandbox Code Playgroud)

它返回:

<author>cbamber85</author>
<author>cmannett85</author>
<author>www-data</author>
Run Code Online (Sandbox Code Playgroud)

svn git git-svn

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

共享OpenGL资源的策略

我正在创建一个类似CAD的应用程序(基于Qt),它将是一个多文档界面,每个文档将包含大约5个视口(从QGLWidget派生).因此,我需要在整个应用程序中共享我的平面着色器,然后在每个文档(即5个视口)之间共享3D资源(存储为VBO的模型).

我想只要我在着色器程序和VBO GLuint地址共享所有将自动工作 - 它没有.我想因为每个视口/上下文在显卡上都有自己的地址空间,如果有人知道更好请告知!

我想在应用程序启动时编译着​​色器,但这很难实现,因为我需要一个有效的QGLWidget来预先将​​OpenGL置于有效状态.但是,由于我需要共享QGLWidgets(通过它们的构造函数)以使它们共享资源,因此需要先创建并显示其他资源,然后才能实例化其他资源.但这是非常不切实际的,因为多个视图一次显示给用户.

这一定比我说的要容易,因为它不是突破性的东西,但我真的很挣扎 - 有人能指出我正确的方向吗?

谢谢,Cam

opengl qt vbo qglwidget

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

内部构造函数中的"this"的dynamic_cast

这个问题与这个问题非常相似为什么我不能在多重继承期间"动态地"广播"侧身"?,除了强制转换确实有效 - 只是不在构造函数内部.

标题:

class A  
{  
public:  
    virtual                ~A() {}
    void                    printA();
};

class B
{
public:
                            B();
    virtual                ~B() {}
    void                    printB();

private:
    std::string             message_;
};

class C : public A, public B
{
public:
                        C() {}
    virtual                ~C() {}
};
Run Code Online (Sandbox Code Playgroud)

资源:

void A::printA() { cout << "A" << endl; }
B::B()
{
    A* a = dynamic_cast< A* >( this );
    if ( a ) {
        message_ = std::string( "A and B" );
    } else { …
Run Code Online (Sandbox Code Playgroud)

c++ constructor dynamic-cast this multiple-inheritance

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

QML:获取 QObject 父级

QObjectQML 引入了与可视化树(QtQuick 场景图)分离的所有权 ( ) 树。

  • parent返回视觉父级。
  • children返回视觉儿童。
  • data返回QObject孩子们。

但是我如何访问QObject父级呢?

仅供参考,我打算动态创建和销毁包含自定义类型的嵌套布局,因此我需要管理树QObject- 仅使用可视树将导致“错误”对象在重新设置父级然后删除后消失。

qt qobject qml qt5 qtquick2

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

使用指定的属性从C++创建QML对象

从C++动态实例化QML对象已有详细记录,但我找不到的是如何使用为其属性预先指定的值来实例化它.

例如,我正在SplitView从C++ 创建一个稍微修改过这样的:

QQmlEngine* engine = QtQml::qmlEngine( this );
QQmlComponent splitComp( engine, QUrl( "qrc:/qml/Sy_splitView.qml" ) );
QObject* splitter = splitComp.create();

splitter->setProperty( "orientation", QVariant::fromValue( orientation ) );
Run Code Online (Sandbox Code Playgroud)

我的问题是,指定orientationSplitView 它被实例化会导致它的内部布局打破.那么,有没有创造的方式SplitVieworientation已经规定?

或者,我可以SplitView在单独的文件中创建水平和垂直版本,并在运行时实例化相应的版本- 但这不太优雅.

更新

我找到了QQmlComponent::beginCreate(QQmlContext* publicContext):

QQmlEngine* engine = QtQml::qmlEngine( this );
QQmlComponent splitComp( engine, QUrl( "qrc:/qml/Sy_splitView.qml" ) );
QObject* splitter = splitComp.beginCreate( engine->contextForObject( this ) );

splitter->setProperty( "orientation", QVariant::fromValue( orientation ) );
splitter->setParent( parent() );
splitter->setProperty( …
Run Code Online (Sandbox Code Playgroud)

c++ qt qml qt-quick

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

std::conditional 编译时分支评估

编译这个:

template < class T, class Y, class ...Args >
struct isSame
{
    static constexpr bool value = std::conditional<
                                      sizeof...( Args ),
                                      typename std::conditional<
                                          std::is_same< T, Y >::value,
                                          isSame< Y, Args... >, // Error!
                                          std::false_type >::type,
                                      std::is_same< T, Y > >::type::value;
};

int main()
{
    qDebug() << isSame< double, int >::value;
    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

给我这个编译器错误:

error: wrong number of template arguments (1, should be 2 or more)
Run Code Online (Sandbox Code Playgroud)

问题是isSame< double, int >有一个空的Args参数包,所以isSame< Y, Args... >实际上变得 …

c++ conditional templates c++11

6
推荐指数
4
解决办法
4876
查看次数

无效的信号参数类型:MouseEvent

如果我尝试MouseEvent在 QML 定义的信号中使用 a作为参数,我会在加载时收到以下错误:

无效的信号参数类型:MouseEvent

Qt 文档中存在与此相关的冲突信息,在QML 信号语法文档中,它指出:

允许的参数类型与定义属性属性 [...] 下列出的参数类型相同,任何 QML 对象类型都可以用作属性类型。

QML/C++ 交互文档中,它指出:

当 QML 对象类型用作信号参数时,参数应使用 var 作为类型

将参数设置为 usevar确实有效,但根据 QML 文档,这似乎没有必要。在很久以前有一个关于这个的错误,但它显然在 v5.0.0 中得到了解决。所以我做错了什么,还是这是一个回归?

编辑

一个简单的演示:

import QtQuick 2.3

Item {
    signal sig( MouseEvent mouse )
}
Run Code Online (Sandbox Code Playgroud)

qt qml qtquick2

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

初始化列表中的QString导致访问冲突.这里出了什么问题?

我在初始化列表中使用QString时遇到了访问冲突,我不明白.

这是一个重现问题的最小例子.

// file ClassA.h
#pragma once
#include <QString>

struct Parameter
{
    QString stringPar;
};

class ClassA
{
     QString m_string1;

public:
    void function(Parameter pars);
};
Run Code Online (Sandbox Code Playgroud)

ClassA的实施......

// file ClassA.cpp
#include "ClassA.h"

void ClassA::function(Parameter pars)
{
    m_string1 = pars.stringPar;   // last line called in my code when the crash happens
}
Run Code Online (Sandbox Code Playgroud)

和main.cpp

// file main.cpp
#include "ClassA.h"

int main()
{
    ClassA classA;

    classA.function({ QString("jkjsdghdkjhgdjufgskhdbfgskzh") });

    // when using this code the problem does not occur
    //Parameter par = { QString("jkjsdghdkjhgdjufgskhdbfgskzh") }; …
Run Code Online (Sandbox Code Playgroud)

c++ qt access-violation initializer-list visual-c++

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

将FBO混合到默认帧缓冲区

澄清的是,当我说'默认帧缓冲'时,我的意思是窗口系统提供的那个以及显示器上的内容.

为了提高我的CAD应用程序的渲染速度,我设法将Qt处理的2D元素中的3D元素分离出来,现在它们都渲染到自己的FBO中.当我们将它们放到屏幕上时,我将3D FBO blit到默认的FB上,然后我想将我的2D FBO混合在它上面.

我已经完成了blitting部分,但我看不出如何将我的2D FBO混合到它上面?两个FBO的大小和格式都相同,它们都与默认FB相同.

我确信这是一个简单的操作,但我在网上找不到任何东西 - 大概我错过了正在尝试做的事情.虽然我正在使用Qt,但我可以毫无问题地使用原生OpenGL命令.

c++ opengl qt framebuffer

5
推荐指数
1
解决办法
2010
查看次数

boost::asio::co_spawn 不会传播异常

我正在涉足关于 boost::asio 的协程,并且我对异常处理感到困惑。从文档中的示例 来看,看起来任何“失败”都会变成异常 - 所以我希望假设抛出的任何异常也会传播回调用。但情况似乎并非如此:error_codeco_spawn

#define BOOST_ASIO_HAS_CO_AWAIT
#define BOOST_ASIO_HAS_STD_COROUTINE

#include <iostream>

#include <boost/asio/awaitable.hpp>
#include <boost/asio/co_spawn.hpp>
#include <boost/asio/detached.hpp>
#include <boost/asio/io_context.hpp>
#include <boost/asio/executor_work_guard.hpp>

namespace this_coro = boost::asio::this_coro;

boost::asio::awaitable<void> async_op()
{
    std::cout << "About to throw" << std::endl;
    throw std::runtime_error{"Bang!"};
}

int main()
{
    auto ctx = boost::asio::io_context{};
    auto guard = boost::asio::make_work_guard(ctx.get_executor());

    boost::asio::co_spawn(ctx, async_op, boost::asio::detached);

    ctx.run();
}
Run Code Online (Sandbox Code Playgroud)

如果这是在调试器中运行,您可以看到抛出异常,但它似乎只是挂起。暂停调试器表明正在ctx.run()等待新的工作(由于executor_work_guard)。所以看起来 boost::asio 内部的某些东西已经默默地吞噬了异常。

作为实验,我将异步操作切换为使用 boost::asio 库调用:

boost::asio::awaitable<void> async_op()
{
    auto executor = co_await this_coro::executor;
    auto …
Run Code Online (Sandbox Code Playgroud)

c++ boost exception coroutine

5
推荐指数
1
解决办法
1359
查看次数