C++ c++;Qt表达式:_BLOCK_TYPE_有效(pHead->;nBlockUse)错误
我正在试图弄清楚为什么会出现这个错误。我已经看到了许多关于相同的问题/答案,但我只是没有看到任何可能导致我的代码出现此错误的原因 根据我所做的研究,造成这一错误的可能原因是: 1-我多次删除对象 2-卷影复制 3-我正在创建和删除从外部dll加载的对象 4-我创建对象时没有存储指针 这是我的密码: TreeView.hC++ c++;Qt表达式:_BLOCK_TYPE_有效(pHead->;nBlockUse)错误,c++,qt,pointers,memory-leaks,C++,Qt,Pointers,Memory Leaks,我正在试图弄清楚为什么会出现这个错误。我已经看到了许多关于相同的问题/答案,但我只是没有看到任何可能导致我的代码出现此错误的原因 根据我所做的研究,造成这一错误的可能原因是: 1-我多次删除对象 2-卷影复制 3-我正在创建和删除从外部dll加载的对象 4-我创建对象时没有存储指针 这是我的密码: TreeView.h #pragma once #include <QtWidgets/qapplication.h> #include <QtWidgets/QTreeVie
#pragma once
#include <QtWidgets/qapplication.h>
#include <QtWidgets/QTreeView>
#include <QtWidgets/QTreeWidgetItem>
#include <QtWidgets\qfilesystemmodel.h>
#include <QtWidgets/qmainwindow.h>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QDirModel>
#include <QtCore/QDebug>
#include <QtCore\qtimer.h>
#include <iostream>
#include <QtCore\qmap.h>
#include <QtWidgets/QFileDialog>
#include <QtWidgets/qpushbutton.h>
using namespace std;
class Tree: public QTreeView {
Q_OBJECT
public:
QFileSystemModel *model;
QPushButton *button;
Tree(QWidget *parent = 0):QTreeView(parent){
this->resize(200,600);
//create the tree
string directory = "C:\\Users\\Alloisio\\Documents\\Visual Studio 2012\\Projects\\TreeView\\TreeWidget\\Indicators\\Factores";
model = new QFileSystemModel(this);
model->setRootPath( directory.c_str());
this->setModel(model);
this->setRootIndex(model->setRootPath(directory.c_str()));
this->setSelectionMode(QAbstractItemView::ExtendedSelection); //allow multi select with Ctrl
//button
button = new QPushButton(this);
button->setText("Display Selected");
button->move(30,600);
QObject::connect(button, SIGNAL (clicked()), this, SLOT (muitiselect()));
}
public slots:
void muitiselect(){
this->selectionModel()->selectedIndexes();
}
};
这是我发现的。执行该函数后立即出现错误:
void muitiselect(){
this->selectionModel()->selectedIndexes();
}
我真的很感激任何形式的帮助。提前感谢您。通过动态分配内容并允许Qt清理它们,您似乎做得很好;但是,有一个例子是您没有这样做,即:
QWidget widget;
QHBoxLayout horizontalLayout(&widget);
在这里,当水平布局
被销毁时,它会销毁小部件
,小部件也会在其作用域结束时尝试销毁自身。尝试:
QWidget* widget = new QWidget();
QHBoxLayout horizontalLayout(widget);
查看哪些在内部使用
注意:项目的所有权转移到版面,版面负责将其删除
谢谢你来看看这个问题。我已经检查过了,错误不是从那里来的。我已经找出了错误的来源,我现在正在编辑这个问题。请看一看
QWidget* widget = new QWidget();
QHBoxLayout horizontalLayout(widget);