小编San*_*912的帖子

必需的属性不适用于中继器

我有一个这样的组件:

import QtQuick 2.15

Item {
    id: root

    property double value: 0.0

    property int core: 1

    property color progressBarColor: "black"
    property color minMaxTextColor: "black"
    property int fontSize: height - 6

//....
}
Run Code Online (Sandbox Code Playgroud)

现在我认为让一些属性成为必需的是一个好主意,因为它们应该在使用组件时声明。所以我改成这样:

import QtQuick 2.15

Item {
    id: root

    required property double value

    required property int core

    property color progressBarColor: "black"
    property color minMaxTextColor: "black"
    property int fontSize: height - 6

//....
}
Run Code Online (Sandbox Code Playgroud)

该组件在转发器中被调用,如下所示:

SystemInformation{
    id: sysinfo
}

Column{
    id: displayColumn


    Repeater{
        model: sysinfo.coreUtilizationsInPercent.length

        CoreUtilizationDisplay{
            width: root.elementWidth
            height: root.elementHeight …
Run Code Online (Sandbox Code Playgroud)

qt qml

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

Tesseract 总是缺少图片中的文本行

我正在尝试使用 OCR 从图片中提取数据。我在 C++ 中使用 Tesseract API 来实现这一点。

原图是这样的:

在此处输入图片说明

现在对我来说重要的数据是这样的:

在此处输入图片说明

然而,无论我尝试什么,永远不会识别标记的蓝线。

用tesseract分析图片的代码是这样的:

std::string readFromFile(const std::string& filename)
{
    tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
    api->SetPageSegMode(tesseract::PSM_AUTO);
    if (api->Init("folder_to_tessdata", "deu+eng")) {
        fprintf(stderr, "Could not initialize tesseract.\n");
        exit(1);
    }

    // Open input image with leptonica library
    Pix *image = pixRead(filename.c_str());
    api->SetImage(image);
    // Get OCR result

    char *outText = api->GetUTF8Text();

    std::string result{ outText };

    api->End();
    delete[] outText;
    pixDestroy(&image);

    return result;
}
Run Code Online (Sandbox Code Playgroud)

我试图通过预处理图像来提高准确性,就像这个问题中建议的那样:图像处理以提高 tesseract OCR 准确性

预处理代码:

cv::Mat image;
image = cv::imread(filename, cv::IMREAD_COLOR);
cv::resize(image, image, cv::Size{}, …
Run Code Online (Sandbox Code Playgroud)

c++ ocr opencv tesseract

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

Visual Studio 2017 社区 C++ 的代码覆盖率

Visual Studio 2017 是否有任何插件可以使用 C++ 计算单元测试代码覆盖率?

我只找到OpenCppCoverage: https://marketplace.visualstudio.com/items? itemName=OpenCppCoverage.OpenCppCoveragePlugin

但它似乎已经过时/不起作用。

除此之外,似乎只有 .Net 语言的代码覆盖率插件,但没有 C++

还有其他选择吗(除了升级到 MSVC Enterprise 之外)

c++ code-coverage visual-studio visual-c++

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

未找到具有注册类型的 QML 模块

我有以下问题:

我收到main.qml这些错误。虽然我可以在代码中完美地使用这些类型。看起来这只是一个智能感知问题。

f5bb7882-0104-47bb-be23-e2d160bc7c2c-image.png

这些类型注册于main.cpp

e745d480-b943-490b-9bba-f253dc8f4974-image.png

这些类在文件夹中定义include

我的文件夹结构如下所示:

a4997bc8-5c83-459d-85e0-de8fb6eade18-image.png

我需要QML_IMPORT_PATH在 pro 文件中修改吗?我添加了 src 和 include 文件夹,但它不起作用:

QML_IMPORT_PATH += src
QML_IMPORT_PATH += include
Run Code Online (Sandbox Code Playgroud)

代码本身运行良好。这只是一个智能感知问题。

qt qt-creator qml

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

Remove_if包含含有变体的向量

我有两个不同的对象:

struct TypeA {
    std::size_t no;
    std::string data;
    std::string data2;
};

struct TypeB {
    std::size_t no;
    std::string data;
    std::string data2;
    std::string data3;
};
Run Code Online (Sandbox Code Playgroud)

它们存储在一个std::vectorstd::variant

std::vector<std::variant< TypeA, TypeB>> ab;
Run Code Online (Sandbox Code Playgroud)

现在我想删除所有元素是成员no = 0.

如果没有std::variant包含的向量,TypeA我会这样做:

ab.erase(std::remove_if(ab.begin(), ab.end(),
    [](const TypeA& a) { return a.no == 0; }), ab.end());
Run Code Online (Sandbox Code Playgroud)

但如何纳入std::variant?我试图想出一些东西,std::visit但我不能在谓词中添加它,std::remove_if或者我可以吗?

c++ variant c++17

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

在std :: visit中获取活动值而不知道哪个值是活动的

我想在std :: variant中获取活动值,而不知道哪个是活动的.我以为我可以写一个模板访问者并使用std :: visit但它不起作用.

#include <variant>
#include <string>
#include <iostream>

struct Visit_configuration {
    template<typename Data_type>
    Data_type operator()(Data_type& t) const
    {
        return t;
    }
};

int main()
{
    std::variant<int, std::string> v;
    v = "hello";

    std::cout << std::visit(Visit_configuration(), v);   // expect "hello"
    std::cin.get();
}
Run Code Online (Sandbox Code Playgroud)

MSVC不编译和抛出:

错误C2338:visit()要求所有潜在调用的结果具有相同的类型和值类别(N4741 23.7.7 [variant.visit]/2).

注意:请参阅正在编译的函数模板实例化'int std :: visit&,0>(_ Callable &&,std :: variant&)'的引用

那么如何解决这个问题呢?

编辑:我想使用获得的值也许也适用于其他因此将cout放在模板中并不是我想要的.

c++ variant c++17

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

替换已弃用的 QtSignalMapper 类以在 Qt5 中转发信号

我有这样的代码,它为 Qt 4 编写了一个 mdi 窗口:

class MdiWindow : public QMainWindow
{
    Q_OBJECT
public:
    MdiWindow( QWidget *parent = nullptr)

...
private:
    QWorkspace* workspace
    QSignalMapper* mapper
}


MdiWindow::MdiWindow( QWidget *parent ) : QMainWindow( parent )
{
  ...

  workspace = new QWorkspace;
  setCentralWidget( workspace );

  connect( workspace, SIGNAL(windowActivated(QWidget *)), this, SLOT(enableActions()));
  mapper = new QSignalMapper( this );
  connect( mapper, SIGNAL(mapped(QWidget*)), workspace, SLOT(setActiveWindow(QWidget*)) );

  ....
}
Run Code Online (Sandbox Code Playgroud)

根据 QT 文档QWorkspace应该替换为QMdiArea.

我这样做了并编写了第一个连接,如下所示:

connect(workspace, &QMdiArea::subWindowActivated,
        this, &MdiWindow::enableActions);
Run Code Online (Sandbox Code Playgroud)

但那QSignalMapper也被弃用了呢?

那么我该如何更新这一行:

mapper …
Run Code Online (Sandbox Code Playgroud)

c++ qt qt5

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

Visual Studio Code g++ 在调试时不能用 c++17 编译

我想编译当前工作区文件夹中的活动文件。

用C ++ 11的文件没有问题,我只是打运行- >开始调试,右launch.jsontasks.json生成。

但是,对于包含 C++17 代码的文件,我遇到了麻烦。

我认为-std=c++17tasks.json使用 C++17 调试时添加标志会编译,但它不起作用。

这里的配置文件:

启动文件

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - Build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable …
Run Code Online (Sandbox Code Playgroud)

c++ g++ visual-studio-code

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