通常,当我删除一个对象时,我将其设置为零.这有助于我编写我的例程以检查对象是否为零然后继续.
但是,如果我使用该deleteLater()功能,我已经失去了对它的控制.我不知道它是否是一个有效的项目,或者我是否需要创建一个新项目.我找到的解决方案只是为了分别跟踪状态,但有更好的方法吗?
我在Windows 7中使用QtCreator.
我想将它配置为使用-O3c ++编译器的第三级优化().
我该怎么做才能加速我的代码以及需要进行哪些更改?
我是Qt的新手,有一个我无法解决的错误.
我有一堆windows(VS2005)静态库文件(.lib).我正在测试它们是否与Qt配合良好.所以我选择了最简单的库.(叫MessageBuffer).
所以我添加MessageBuffer.h的main.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) 我有一个Qt程序,它显示它通过UDP接收的数据.它工作正常大约30秒,但过了一段时间它会给出分段错误和崩溃.这30秒也没有修复.
我使用调试器得到了这个:
Program received signal SIGSEGV, Segmentation fault.
0x003c6fd4 in ?? () from /usr/lib/libQtGui.so.4
Run Code Online (Sandbox Code Playgroud)
谁能告诉我错误可能在哪里?
当我尝试使用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)
但是,这需要构建步骤.
该如何实施?
BUILD_COMMAND到ExternaProject_Add,并与生产库链接?add_subdirectory (${CMAKE_SOURCE_DIR}\ext\src\gtest\googletest\CMakeLists.txt)
这是不正确的方法,因为在项目加载的那一刻文件夹不存在.
什么是正确/偏好的方式?
刚刚从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 QVariantQVariantList,而不是void insert(int index, const QVariant &item)具有过载QString裹QVariant.
现在,如果我按如下方式更改声明的顺序,它将按预期工作:
Q_SLOT void insert(int index, const QVariantList &items);
Q_SLOT …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Mac OSX上构建一个项目,它给了我一个神秘的错误:
[moc_droparea.cpp]错误1
droparea.cpp(显然)是项目中的一个文件.我检查它是否存在于项目目录中并且没有损坏.moc_droparea.cpp在此错误之后,文件没有显示在构建文件夹中,因此我假设它无法以任何原因构建,但错误太模糊,无法帮助我弄清楚发生了什么.任何人都可以帮我弄清楚这意味着什么吗?
我尝试使用https url 发送get请求.回复为空,但没有错误消息.我下载OpenSSL并将libeay32.dll和ssleay32.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++ 两个月了,现在正在学习我的书(使用 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) 我重写了从Qt 4.8到5.0.1的应用程序,我遇到了大麻烦.在Qt 5.0.1版本中没有GetDC()函数(没有参数).GetDC(hwnd)存在,但我没有hwnd.我该怎么办?请帮忙.在谷歌上没有关于它的信息.