小编HD_*_*use的帖子

如何从CMakeLists.txt文件中设置include_directories?

我似乎在使用CMake中的include_directories()命令设置包含路径("-I")时遇到问题.我的项目目录如下:

Root
| - CMakeLists.txt
| - libs
| - | - CMakeLists.txt
| - | - inc
| - | - | - // lib specific includes
| - | - src
| - | - | - // lib specific sources
| - proj1
| - | - CMakeLists.txt
| - | - inc
| - | - | - // proj1 specific includes
| - | - src
| - | - | - // proj1 specific …
Run Code Online (Sandbox Code Playgroud)

cmake

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

将信号连接到QMetaProperty的插槽

我不确定这样的事情是否可行,但我试图根据已经注册到Qt属性系统的属性动态生成GUI.我的假设是,因为我以这种方式使用Q_PROPERTY()注册了一个属性:

Q_PROPERTY(propertyType propertyName WRITE setPropertyName READ getPropertyName NOTIFY propertynameSignal)
Run Code Online (Sandbox Code Playgroud)

我应该能够使用connect()函数检索用于连接的写或读函数的签名.这样做的目的是将一个对话框连接到此对象以修改属性,但无需手动编写所有属性.这是可能的,我会采用错误的方式,还是应该硬编码对话框?

编辑1:我将分享一些代码(剥离),我希望能够让我更清楚地知道我正在尝试做什么:

特定类的类声明:

class MyObject : public QObject
{
    Q_OBJECT
    Q_PROPERTY(bool someBool READ getBool WRITE setBool)
  public:
    bool someBool;

    bool getBool();
    void setBool(bool);
}
Run Code Online (Sandbox Code Playgroud)

指向此Object的QDialog子类:

void MyDialog::generateUI()
{
    const QMetaObject* metaObject = _MyObjectPtr->metaObject();
    for (int i = 0; i < metaObject->propertyCount(); ++i)
    {
        QMetaProperty property = metaObject->property(i);
        if (!strcmp(property.typeName(), "bool")
        {
            QCheckBox* checkBox = new QCheckBox(this);
            bool state = metaObject->property(property->name()).toBool();
            checkBox->setCheckState((state) ? Qt::Checked : Qt::Unchecked);

            // Add checkBox to QDialog layout …
Run Code Online (Sandbox Code Playgroud)

qt signals-slots

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

当我期望它时,onCompletion没有被调用

我在我的父类中发布了一个MediaPlayer成员变量,在我启动之后,它不会调用onCompletion,或者至少onCompletionListener没有捕获它?我的代码看起来有点效果

mediaPlayer = Mediaplayer.create(this, currentSample);
mediaPlayer.start();
Run Code Online (Sandbox Code Playgroud)

代码中的其他地方是我的onCompletionListener

mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
    public void onCompletion(MediaPlayer mp) {      
        if (repeatFlag == true) {
            handler.removeCallbacks(sampleRunnable);
            handler.postDelayed(sampleRunnable, delay);
        }
    }   
});
Run Code Online (Sandbox Code Playgroud)

我正在使用处理程序来调用sampleRunnable,因为我想以指定的延迟间隔循环它.但是,onCompletion似乎永远不会被调用.我对此非常肯定,因为我在onCompletion中设置了断点,它永远不会暂停程序,我试图单步执行它似乎永远不会被调用.有任何想法吗?

android

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

Valgrind报告说getaddrinfo正在泄漏内存?

我一直在我们的项目上运行Valgrind,并且valgrind已经报告说,尽管在函数的底部调用了freeaddrinfo,但是从getaddrinfo的调用中已经丢失了内存.知道可能导致这种情况的原因吗?

int tcp_connect(char *address, char *port)
{
//printf("%s\n ", address);
    int status, sockfd;
    struct addrinfo hints, *servinfo, *p;

    memset(&hints, 0, sizeof hints);
    hints.ai_family = AF_UNSPEC;
    hints.ai_socktype= SOCK_STREAM;
    status = getaddrinfo(address,port,&hints,&servinfo);
    if(status != 0){
        printf("tcpconnect: getaddrinfo failed\n");
    }
    for(p = servinfo; p != NULL; p = p->ai_next) {
        sockfd = socket(p->ai_family, p->ai_socktype, p->ai_protocol);
        if(sockfd == -1){
            printf("tcpconnect: socket failed\n");
            continue;
        }

        status = connect(sockfd, p->ai_addr, p->ai_addrlen);
        if(status == -1){
            close(sockfd);
            printf("tcpconnect: connect failed\n");
            continue;
        }
        break;
    }

    if (p == NULL){ …
Run Code Online (Sandbox Code Playgroud)

c valgrind memory-leaks

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

具有单位向量约束的非线性优化

我有一个 3x3 矩阵 E,我正在尝试解决这个优化问题:

|| E * t || = minimum
Run Code Online (Sandbox Code Playgroud)

其中 t 是我正在寻找的解决方案,它必须是单位向量(表示为 3x1 矩阵)。|| ×|| 表示 x 的欧几里德距离。

有没有可以帮助我解决这个问题的库?我在各种库中找到了几个求解函数,但我似乎找不到一个可以让我施加附加约束,即 t 必须是单位向量。那么我可以在没有库的情况下以编程方式解决这个问题吗?

c++ algorithm math matrix

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

标签 统计

algorithm ×1

android ×1

c ×1

c++ ×1

cmake ×1

math ×1

matrix ×1

memory-leaks ×1

qt ×1

signals-slots ×1

valgrind ×1