小编Vic*_*voy的帖子

是否可以在Qt5 QML中断开所有插槽与信号的连接?

在QML中,不可能在.disconnect()没有参数的情况下调用信号:

file:mainwindow.qml:107: Error: Function.prototype.disconnect: no arguments given
Run Code Online (Sandbox Code Playgroud)

那么如何在不指定每个插槽的情况下断开所有插槽?或者也许可以通过传递信号对象C++并以某种方式断开它?或者可能存在任何解决方法?

我想达到的目标是通过将不同的插槽连接到它的信号来改变对象的行为.例如:

object.disconnect() // disconnect all slots
object.connect(one_super_slot)
object.disconnect() // disconnect all slots
object.connect(another_super_slot)
Run Code Online (Sandbox Code Playgroud)

qt signals disconnect qml slot

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

从 C++ 加载 QML 插件

是否可以从 C++ 加载 QML 插件来QPluginLoader使用它的功能?在我的项目中,我有一个 qml 插件,其中包含版本信息,我想从 C++ 读取它。

例子:

main() {
    // ...
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:///ui/views/mainwindow.qml")));

    if (parser.isSet(verionsOption)) {
        QSharedPointer<QQmlExtensionPlugin> myPlugin = // load plugin
        std::cout << "Version of plugin: " << myPlugin->version() << std::endl;
    }

    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

c++ plugins qt qml

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

链接.如何同时定义和定义符号?

$ nm --demangle /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/libsupc++.a  | grep "__cxxabiv1::__class_type_info::~__class_type_info"
Run Code Online (Sandbox Code Playgroud)

给出以下输出:

0000000000000000 T __cxxabiv1::__class_type_info::~__class_type_info()
0000000000000000 T __cxxabiv1::__class_type_info::~__class_type_info()
0000000000000000 T __cxxabiv1::__class_type_info::~__class_type_info()
                 U __cxxabiv1::__class_type_info::~__class_type_info()
                 U __cxxabiv1::__class_type_info::~__class_type_info()
Run Code Online (Sandbox Code Playgroud)

那么,如何解释这个输出?

  1. 这是符号的多个定义(三个T) - 它可能是怎样的?为什么链接器生成这样的库违反ODR?什么目的?为什么他们都有相同(和奇怪)的地址(0000000000000000)?
  2. 同一个符号如何同时定义(T)和undefined(U)?

c++ linker

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

C++初始化列表和默认值

这段代码对C++ 14有效吗?

using namespace std;
struct Point
{
  int x = 0;
  int y = 0;
};
Point p2 {1, 1};
Run Code Online (Sandbox Code Playgroud)

它使用clang ++ 7.0编译得很好,在两种情况下它都不适用于G ++ 4.9我将--std = c ++ 1y传递给编译器.

在G ++中,当我从结构定义中删除默认值时,它可以工作.

g++ test_constexpr_ctor.cc --std=c++1y -o test
test_constexpr_ctor.cc:7:15: error: no matching function for call to ‘Point::Point(<brace-enclosed initializer list>)’
Point p2 {1, 1};
            ^
test_constexpr_ctor.cc:7:15: note: candidates are:
test_constexpr_ctor.cc:1:8: note: constexpr Point::Point()
struct Point
        ^
test_constexpr_ctor.cc:1:8: note:   candidate expects 0 arguments, 2 provided
test_constexpr_ctor.cc:1:8: note: constexpr Point::Point(const Point&)
test_constexpr_ctor.cc:1:8: note:   candidate …
Run Code Online (Sandbox Code Playgroud)

c++ g++ c++14

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

具有通用引用的模板构造函数是否隐藏移动构造器?

这个模板ctor隐藏移动ctor吗?

class A {
    public:
        template<typename T>
        A(T &&t);

        // move would be as this:
        /*
            A(A &&a);
        */
};
Run Code Online (Sandbox Code Playgroud)

那么在这种情况下我应该如何实施移动ctor呢?它应该是默认语法A (A &&)还是模板专门化?

c++ c++11

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

如何使用函数引用创建一个lazy_static HashMap作为值?

我试图HashMap用函数创建一个值:

#[macro_use]
extern crate lazy_static;

use std::collections::HashMap;

lazy_static! {
    static ref HASHES: HashMap<&'static str, &'static Fn([u8])> = {
        let mut m = HashMap::new();
        m.insert("md5", &md5);
        m
    };
}

fn md5(bytes: &[u8]) -> String {
    String::default()
}
Run Code Online (Sandbox Code Playgroud)

编译器给我一个错误:

error[E0277]: the trait bound `std::ops::Fn([u8]) + 'static: std::marker::Sync` is not satisfied in `&'static std::ops::Fn([u8]) + 'static`
  --> src/main.rs:6:1
   |
6  |   lazy_static! {
   |  _^ starting here...
7  | |     static ref HASHES: HashMap<&'static str, &'static Fn([u8])> = {
8  | …
Run Code Online (Sandbox Code Playgroud)

rust

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

QML覆盖项目样式

是否可以仅覆盖样式的一个属性,例如,组合框?

ComboBox {
        id: comboBox

        anchors.fill: parent

        style: ComboBoxStyle {
            label: Component {
               Text {
                    text: "Players -> " + comboBox.currentText
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

在KDE中,这个组合框看起来很难看,因为它不使用kde主题样式并使用默认的一个.

具有覆盖样式且没有样式覆盖的ComboBox: 具有覆盖样式且没有样式覆盖的ComboBox

我需要在这张图片上有一个像最后一个样式的组合框,但是有自定义文本.

qt combobox qml

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

显式operator = call(T :: operator =)

我正在阅读qt资源,我已经多次看过这样的代码:

buttonOpt.QStyleOption::operator=(*opt);
Run Code Online (Sandbox Code Playgroud)

所以,我想这是类似的,buttonOpt = *opt但为什么他们使用这种语法而不是默认和用户友好?这更快还是存在任何其他利润?

c++ qt assignment-operator

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

编写static const uint变量和匿名枚举变量有什么区别?

正在看一下boost asio ssl_client.cpp的例子,发现这是正确的:

enum { max_length = 1024 };
Run Code Online (Sandbox Code Playgroud)

不知道,这和之间有什么区别

namespace {
    const int max_length = 1024;
}
Run Code Online (Sandbox Code Playgroud)

要么

static const int max_length = 1024;
Run Code Online (Sandbox Code Playgroud)

或者它们绝对平等,但这只是更短?

c++ enums boost

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

子目录之间的 CMake 自定义目标名称冲突

我正在编写一个游戏引擎,我有一个名为的目录thirdparty,其中放置了我的引擎使用的所有外部库:

thirdparty/...
          /zlib
          /freetype2
          /SDL2
          /...
Run Code Online (Sandbox Code Playgroud)

因此,引擎目录结构如下所示:

engine/actors
engine/memory_allocator
engine/renderer
engine/...
engine/thirdparty
engine/thirdparty/CMakeLists.txt
engine/CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

engine/CMakeLists.txt

cmake_minimum_required (VERSION 3.2)

project(Engine)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Werror")
# Include build directory to be able to include generated files:
set(CMAKE_INCLUDE_CURRENT_DIR ON)
file(GLOB GLAD_SOURCES thirdparty/glad/src/glad.c)
file(GLOB ACTOR_SOURCES actors/*.cpp)
file(GLOB LOGIC_SOURCES logic/*.cpp)
file(GLOB UI_SOURCES ui/*.cpp)
set(SOURCES ${GLAD_SOURCES}
            ${ACTOR_SOURCES}
            ${LOGIC_SOURCES}
            ${UI_SOURCES})
add_library(engine SHARED ${SOURCES})

include_directories(thirdparty/glm/)
include_directories(thirdparty/glad/include)
include_directories(thirdparty/tinyxml2/)
include_directories(thirdparty/zlib/)
include_directories(thirdparty/sdl2/SDL2-2.0.5/)
include_directories(./)
add_subdirectory(../../thirdparty thirdparty)

target_link_libraries(engine SDL2)
target_link_libraries(engine tinyxml2)
target_link_libraries(engine zlib)
Run Code Online (Sandbox Code Playgroud)

engine/thirdparty/CMakeLists.txt: …

c++ cmake

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

标签 统计

c++ ×7

qt ×4

qml ×3

assignment-operator ×1

boost ×1

c++11 ×1

c++14 ×1

cmake ×1

combobox ×1

disconnect ×1

enums ×1

g++ ×1

linker ×1

plugins ×1

rust ×1

signals ×1

slot ×1