小编tro*_*ane的帖子

如何让QObject :: deleteLater()将对象归零?

通常,当我删除一个对象时,我将其设置为零.这有助于我编写我的例程以检查对象是否为零然后继续.

但是,如果我使用该deleteLater()功能,我已经失去了对它的控制.我不知道它是否是一个有效的项目,或者我是否需要创建一个新项目.我找到的解决方案只是为了分别跟踪状态,但有更好的方法吗?

c++ qt memory-management qobject

12
推荐指数
2
解决办法
4807
查看次数

用于优化QtCreator编译器的配置

我在Windows 7中使用QtCreator.

我想将它配置为使用-O3c ++编译器的第三级优化().

我该怎么做才能加速我的代码以及需要进行哪些更改?

c++ qt g++ compiler-optimization qt-creator

12
推荐指数
1
解决办法
2万
查看次数

Qt/mingw32未定义的引用错误...无法链接.lib

我是Qt的新手,有一个我无法解决的错误.

我有一堆windows(VS2005)静态库文件(.lib).我正在测试它们是否与Qt配合良好.所以我选择了最简单的库.(叫MessageBuffer).

所以我添加MessageBuffer.hmain.cpp,而在添加这些文件的位置INCLUDEPATH.pro.

在那之前一切都很好,我可以使用类和Qt IDE显示所有方法和一切.所以对我来说,它看起来像是找到了.h文件.

现在我添加了MessageBuffer.lib(VS2005/Debug版本),.pro如下所示:

LIBS += E:/SharedLibrary/lib/MessageBufferd.lib
Run Code Online (Sandbox Code Playgroud)

我也尝试过以下方法:

win32:LIBS += E:/SharedLibrary/lib/MessageBufferd.lib
LIBS += -LE:/SharedLibrary/lib -lMessageBufferd
win32:LIBS += -LE:/SharedLibrary/lib -lMessageBufferd
Run Code Online (Sandbox Code Playgroud)

这是我的.pro文件的内容:

QT += opengl
TARGET = SilverEye
TEMPLATE = app
INCLUDEPATH += E:/SharedLibrary/MessageBuffer
SOURCES += main.cpp \
    silvereye.cpp
HEADERS += silvereye.h
FORMS += silvereye.ui
OTHER_FILES += 
win32:LIBS += E:/SharedLibrary/lib/MessageBufferd.lib
Run Code Online (Sandbox Code Playgroud)

他们都给了我同样的错误:(即使我不包括,我也会得到同样的错误.lib)

Running build steps for project SilverEye...
Configuration unchanged, skipping …
Run Code Online (Sandbox Code Playgroud)

c++ linker qt mingw

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

什么是SIGSEGV,Qt中的分段错误

我有一个Qt程序,它显示它通过UDP接收的数据.它工作正常大约30秒,但过了一段时间它会给出分段错误和崩溃.这30秒也没有修复.

我使用调试器得到了这个:

Program received signal SIGSEGV, Segmentation fault.
0x003c6fd4 in ?? () from /usr/lib/libQtGui.so.4
Run Code Online (Sandbox Code Playgroud)

谁能告诉我错误可能在哪里?

qt segmentation-fault

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

如何克隆和集成外部(从git)cmake项目到本地项目

当我尝试使用Google Test时,我遇到了一个问题.

有很多关于如何使用ExternalProject_Addgtest添加到项目中的手册,但是大多数这些手册描述了一种基于使用gtest下载zip存档并构建它的方法.

我们知道gtest是github托管和基于cmake的项目.所以我想找到原生的cmake方式.

如果这是一个仅限标题的项目,我会写一些类似于:

cmake_minimum_required(VERSION 2.8.8)
include(ExternalProject)
find_package(Git REQUIRED)

ExternalProject_Add(
    gtest
    PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/ext
    GIT_REPOSITORY https://github.com/google/googletest.git
    TIMEOUT 10
    UPDATE_COMMAND ${GIT_EXECUTABLE} pull
    CONFIGURE_COMMAND ""
    BUILD_COMMAND ""
    INSTALL_COMMAND ""
    LOG_DOWNLOAD ON
)

ExternalProject_Get_Property(gtest source_dir)
set(GTEST_INCLUDE_DIR ${source_dir}/googletest/include CACHE INTERNAL "Path to include folder for GTest")
set(GTEST_ROOT_DIR ${source_dir}/googletest CACHE INTERNAL "Path to source folder for GTest")
include_directories(${INCLUDE_DIRECTORIES} ${GTEST_INCLUDE_DIR} ${GTEST_ROOT_DIR})
message(${GTEST_INCLUDE_DIR})
Run Code Online (Sandbox Code Playgroud)

并从我的cmake项目添加此脚本,如:

 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/")
 include(AddGTest)
....
 add_dependencies(${PROJECT_NAME} gtest)
Run Code Online (Sandbox Code Playgroud)

但是,这需要构建步骤.

该如何实施?

  1. 通过添加BUILD_COMMANDExternaProject_Add,并与生产库链接?
  2. 或者通过将gtest的cmakelists包含到我的项目中,如下所示:

add_subdirectory (${CMAKE_SOURCE_DIR}\ext\src\gtest\googletest\CMakeLists.txt)

这是不正确的方法,因为在项目加载的那一刻文件夹不存在.

  1. 还有其他方法吗?

什么是正确/偏好的方式?

c++ git cmake googletest

11
推荐指数
1
解决办法
2万
查看次数

Qt/Qml和方法重载

刚刚从Qml中调用重载的C++方法并尝试理解其背后的原因时,遇到了Qt框架的奇怪行为.假设我有一个QList<QVariant>类似于以下方法的类:

...
Q_SLOT void append(const QVariant &item);
Q_SLOT void append(const QVariantList &items);
Q_SLOT void insert(int index, const QVariant &item);
Q_SLOT void insert(int index, const QVariantList &items);
...
Run Code Online (Sandbox Code Playgroud)

QML:

onclicked: {
  var itemCount = myListObject.size();
  myListObject.insert(itemCount, "Item " + (itemCount + 1));
}
Run Code Online (Sandbox Code Playgroud)

Qt的某种方式决定将调用void insert(int index, const QVariantList &items)与过载items参数设置为一个null QVariant空的QVariantList,而不是void insert(int index, const QVariant &item)具有过载QStringQVariant.

现在,如果我按如下方式更改声明的顺序,它将按预期工作:

Q_SLOT void insert(int index, const QVariantList &items);
Q_SLOT …
Run Code Online (Sandbox Code Playgroud)

c++ qt moc qml

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

Qt moc错误1 - 这是什么意思?

我正在尝试在Mac OSX上构建一个项目,它给了我一个神秘的错误:

[moc_droparea.cpp]错误1

droparea.cpp(显然)是项目中的一个文件.我检查它是否存在于项目目录中并且没有损坏.moc_droparea.cpp在此错误之后,文件没有显示在构建文件夹中,因此我假设它无法以任何原因构建,但错误太模糊,无法帮助我弄清楚发生了什么.任何人都可以帮我弄清楚这意味着什么吗?

qt qt-creator

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

Qt如何向服务器发送https请求?

我尝试使用https url 发送get请求.回复为空,但没有错误消息.我下载OpenSSL并将libeay32.dllssleay32.dll文件复制到C:\ Qt\Qt5.1.1\Tools\QtCreator\bin文件夹.

码:

QNetworkAccessManager *manager = new QNetworkAccessManager();
QNetworkRequest request;
QNetworkReply *reply = NULL;

QSslConfiguration config = QSslConfiguration::defaultConfiguration();
config.setProtocol(QSsl::TlsV1_2);
request.setSslConfiguration(config);
request.setUrl(QUrl(url));
request.setHeader(QNetworkRequest::ServerHeader, "application/json");

reply = manager->get(request);

qDebug() << reply->readAll();
Run Code Online (Sandbox Code Playgroud)

c++ https qt request

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

运行时错误和逻辑错误之间的区别

我已经学习 C++ 两个月了,现在正在学习我的书(使用 C++ 的编程原理和实践)中有关错误的章节。但在研究了第一页之后,我有一个问题:运行时错误和逻辑错误之间有什么区别?根据我的书,运行时错误是在运行时检查发现的错误,我们可以进一步将运行时错误分类为:

  • 硬件错误/操作系统错误
  • 库检测到的错误
  • 用户代码检测到的错误(什么是用户代码?)

而逻辑错误只是程序员在寻找错误结果的原因时发现的错误。

我以为我已经理解了这种差异,但后来作者提供的一个例子让我产生了疑问。这是例子:

#include "std_lib_facilities.h"

int area(int lenght, int width) // calculate area of rectangle 
{
    return lenght * width; 
}

int framed_area(int x, int y) // calculate area within frame 
{
    return area(x - 2, y - 2); 
}

int main()
{
    int x = -1;
    int y = 2; 
    int z = 4; 
    int area1 = area(x, y); 
    int area2 = framed_area(1, z); 
    int area3 = framed_area(y, z); 
    double …
Run Code Online (Sandbox Code Playgroud)

c++ runtime-error

9
推荐指数
1
解决办法
2万
查看次数

Qt 5.0.1中的QWidget中的GetDC()函数

我重写了从Qt 4.8到5.0.1的应用程序,我遇到了大麻烦.在Qt 5.0.1版本中没有GetDC()函数(没有参数).GetDC(hwnd)存在,但我没有hwnd.我该怎么办?请帮忙.在谷歌上没有关于它的信息.

qt5

8
推荐指数
0
解决办法
1722
查看次数