小编Pet*_*ter的帖子

无法在Qt项目中使用共享库

我在Qt Creator中创建了一个C ++库项目。构建项目后,我有了libMylib.so,.so.1,.so.1.0,.so.1.0.0,Makefile和mylib.o文件。我将库标头添加到其他项目中,并将路径添加到.pro文件中,如下所示:

LIBS += "/home/peter/Workspace/build-Libtester-Desktop-Release/libMyLib.so"
Run Code Online (Sandbox Code Playgroud)

在构建应用程序时,没有出现此类文件错误,但是在运行该应用程序时,出现以下错误:

/home/peter/Workspace/build-Libtester-Desktop-Debug/Libtester: error while loading shared libraries: libMyLib.so.1: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我无法理解,因为它就在它似乎找到的.so旁边,因为当路径错误时,在尝试构建项目时出现这样的文件或目录错误。有人可以解释一下我在这里缺少什么吗?

谢谢你的时间。

qt shared-libraries dynamic-linking ld qt-creator

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

如何从qml访问ListView的当前项目

我有一个存储和编辑笔记的应用程序.笔记列表显示在列表视图中,如下所示:

Page {
        id: noteList
        title: i18n.tr("QNote")
        visible: false

        Column {
            anchors.fill: parent

            ListView {
                anchors.fill: parent
                model: notes
                delegate: ListItem.Standard {
                    text: Title
                    onClicked: editNote(NoteText, Title, modelData);
                    progression: true
                }
            }
        }
    }

function editNote(text, title, item) {
    pageStack.push(noteEdit, {title: title, text: text});
    handler.setActiveItem(item);
}
Run Code Online (Sandbox Code Playgroud)

notes项是一个NoteListModel,它是QAbstractListModel的子类,包含NoteListItems.我想要做的是存储当前选择的NoteListItem,这样当用户想要保存修改后的音符时,我就可以轻松访问里面的Note对象.但是,我不知道如何从qml委托访问后备NoteListItem.modelData似乎是别的东西.有没有办法这样做?如果我可以将Note对象包装在QVariant中,我可以通过角色轻松访问它,但是当我像这样尝试它时

QVariant NoteListItem::data(int role) {
    switch (role) {
    case Title:
        return note.getTitle();
    case NoteText:
        return note.getText();
    case NoteObject:
        return QVariant::fromValue(note);
    default:
        return QVariant();
    }
}
Run Code Online (Sandbox Code Playgroud)

它导致编译器错误说

qmetatype.h:642:错误:'sizeof'无效应用于不完整类型'QStaticAssertFailure'

或者我应该尝试从支持代码访问选定的列表项?那有什么办法吗?你有什么想法吗?

谢谢你的时间.问候,彼得

qt qabstractitemmodel qml qt5

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

为什么powershell会收集未捕获的值并将其作为数组返回

下面的代码虽然我认为应该返回一个值,但返回一个数组.

function Do-Something {
    123
    return 456
}

(Do-Something).GetType() # will say Object[]
Run Code Online (Sandbox Code Playgroud)

我了解到,如果我想避免这种情况,我必须像这样将不需要的值传递给Out-Null

function Do-Something {
    123 | Out-Null
    return 456
}
Run Code Online (Sandbox Code Playgroud)

但是,我找不到为什么PowerShell以这种方式实现的原因.我发现如果你忘记某些东西有一个你没有捕获的返回值,这会导致讨厌的和无声的错误.有人可以解释什么时候这可以派上用场吗?还有可能强制powershell不收集数组中所有未捕获的变量吗?

powershell return

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

使用Qt设置http get请求参数

我正在Qt中开发一个基本应用程序,它使用REST API从Parse.com检索数据.我浏览了一些类引用和cURL手册,但是仍然不清楚如何设置请求参数.例如,我想验证用户身份.这是Parse提供的卷曲示例:

curl -X GET \
-H "X-Parse-Application-Id: myappid" \
-H "X-Parse-REST-API-Key: myapikey" \
-G \
--data-urlencode 'username=test' \
--data-urlencode 'password=test' \
https://api.parse.com/1/login
Run Code Online (Sandbox Code Playgroud)

我像这样设置网址和标题

QUrl url("https://api.parse.com/1/login");
QNetworkRequest request(url);

request.setRawHeader("X-Parse-Application-Id", "myappid");
request.setRawHeader("X-Parse-REST-API-Key", "myapikey");

nam->get(request);
Run Code Online (Sandbox Code Playgroud)

当没有参数时哪个工作正常,但是我应该使用什么来实现与curl相同的--data-urlencode开关?

谢谢你的时间

rest qt curl parse-platform

4
推荐指数
2
解决办法
8514
查看次数

f#模式匹配c#类

我有一个C#模块接收和处理Operation类的各种实例.接口声明了一个方法:

Operation Transform(Operation o1, Operation o2);
Run Code Online (Sandbox Code Playgroud)

但是有几种操作.例如,对于简单的文本编辑,有InsertOperation和DeleteOperation,因此Transform方法的主体首先排序它接收的操作类型并将其转换.在学习了一些F#后,我想在其中重写项目的这一部分(作为练习和实验)并且认为我可以通过这样的模式匹配来更好地处理这个:

let Transform (oa: Operation) (ob: Operation) = 
    match oa, ob with 
    | InsertOperation o1, InsertOperation o2 -> //transformation
    | DeleteOperation o1, InsertOperation o2 -> //transformation
    | InsertOperation o1, DeleteOperation o2 -> //transformation
    | DeleteOperation o1, DeleteOperation o2 -> //transformation
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误消息:

The pattern discriminator 'InsertOperation' is not defined
Run Code Online (Sandbox Code Playgroud)

Operation类及其后代是用C#编写的,但我认为这不应该成为问题.有人可以解释为什么这是一个问题,我怎么能解决这个问题?

.net c# f# pattern-matching

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

尝试调试时出现Eclipse JDWP错误

尝试在eclipse中调试本地java应用程序时出现以下错误.

FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
ERROR: transport error 202: connect failed: Connection refused
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690]
Run Code Online (Sandbox Code Playgroud)

我读到它可能是由于某个eclipse想要用于调试的端口使用相同的端口引起的,但我如何确定端口号.我在错误日志或首选项中找不到任何内容.

有任何想法吗?

eclipse debugging jdwp

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