找回密码
 立即注册
收起左侧

FTH: (3460): *** Fault tolerant heap shim applied to current process. This is...

6
回复
13664
查看
[复制链接]
累计签到:23 天
连续签到:1 天
来源: 2013-11-17 22:21:28 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 cliffordl 于 2013-11-18 14:38 编辑

程序源码如下:
mylistwidgetitem.h文件:
#ifndef MYLISTWIDGETITEM_H#define MYLISTWIDGETITEM_H
#include <QWidget>#include <QCheckBox>#include <QRadioButton>#include <QListWidget>
#include <QListWidgetItem>#include <QToolButton>#include <QHBoxLayout>#include <QVBoxLayout>
class MyListWidgetItem : public QWidget{
    Q_OBJECTpublic:
    //explicit  MyListWidgetItem(QString regionAddressArg,QList<QString> meterAddressListArg,QWidget *parent = 0);
    MyListWidgetItem(QString regionAddressArg,QList<QString> meterAddressListArg,QWidget *parent);
private:
    void initialMainWindow();
    QString regionAddress;
    QList<QString> meterAddressList;
signals:
public slots:
};
#endif // MYLISTWIDGETITEM_H

mylistwidgetitem.cpp文件

#include "mylistwidgetitem.h"
MyListWidgetItem::MyListWidgetItem(QString regionAddressArg,QList<QString> meterAddressListArg,QWidget *parent) :    QWidget(parent){
    regionAddress = regionAddressArg;
    meterAddressList = meterAddressListArg;
    initialMainWindow();
}
void MyListWidgetItem::initialMainWindow(){
    QCheckBox *regionCheckBox = new QCheckBox(regionAddress,this);
    regionCheckBox->setFixedSize(100,20);
    QRadioButton *allSelectRadio = new QRadioButton(tr("全选"),this);
    allSelectRadio->setFixedSize(60,20);
    QRadioButton *againSelectRadio = new QRadioButton(tr("反选"),this);
   
againSelectRadio->setFixedSize(60,20);
    QToolButton *headToolButton = new QToolButton(this);
    headToolButton->setText(tr("隐藏"));
    headToolButton->setFixedSize(50,20);
   
    QHBoxLayout *headLayout = new QHBoxLayout;
    headLayout->setMargin(0);
    headLayout->setSpacing(0);
    headLayout->addWidget(regionCheckBox);
    headLayout->addWidget(allSelectRadio);
    headLayout->addWidget(againSelectRadio);
    headLayout->addStretch();
    headLayout->addWidget(headToolButton);

    QListWidget *meterAddListWidget = new QListWidget;
    meterAddListWidget->setViewMode(QListView::IconMode);
    meterAddListWidget->setResizeMode(QListView::Adjust);
    for(int i = 0; i < 30; i++){
        QListWidgetItem *item = new QListWidgetItem("112233445566");
        item->setCheckState(Qt::Unchecked);
        meterAddListWidget->addItem(item);
    }

*  
//添加主布局
    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->setMargin(0);
    mainLayout->setSpacing(2);
   
mainLayout->addLayout(headLayout);
   
mainLayout->addWidget(meterAddListWidget);

   
this->setLayout(mainLayout);
}

mylistwidget.h文件:
#ifndef MYLISTWIDGET_H#define MYLISTWIDGET_H
#include <QWidget>#include "mylistwidgetitem.h"
class MyListWidget : public QWidget{
    Q_OBJECT
public:
   //explicit   MyListWidget(QWidget *parent = 0);
    MyListWidget(QWidget *parent);
    ~MyListWidget();
private:
    QString *regionAddress;
    QList<QString> meterAddressList1;
    QList<QString> meterAddressList2;
signals:
public slots:
};
#endif // MYLISTWIDGET_H

mylistwidget.cpp文件:
#include "mylistwidget.h"#include "mylistwidgetitem.h"#include <QVBoxLayout>#include <QDebug>
MyListWidget::MyListWidget(QWidget *parent) :    QWidget(parent){
    meterAddressList1 << "112233445566" << "112233445566";
    meterAddressList2 << "112233445566" << "112233445566";
    qDebug() << "hello";
    MyListWidgetItem *mylistWidgetItem1 = new MyListWidgetItem("112233445566",meterAddressList1,this);
    MyListWidgetItem *mylistWidgetItem2 = new MyListWidgetItem("112233445577",meterAddressList2,this);
   
    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->setMargin(0);
    mainLayout->setSpacing(0);
    mainLayout->addWidget(mylistWidgetItem1);
    mainLayout->addWidget(mylistWidgetItem2);

    this->setLayout(mainLayout);
}
MyListWidget::~MyListWidget(){}

mainwindow.cpp文件
#include "mainwindow.h"#include "ui_mainwindow.h"#include "mylistwidget.h"
MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),    ui(new Ui::MainWindow){
*  
ui->setupUi(this);
    MyListWidget *myListWidget = new MyListWidget(this);
    //myListWidget->sayHello();
*  
this->setCentralWidget(myListWidget);
}
MainWindow::~MainWindow()
{
    delete ui;
}

运行之后出现如下提示:
F:\qtProject\myListWidget\myListWidget-build-desktop\debug\myListWidget.exe 启动中...
FTH: (3460): *** Fault tolerant heap shim applied to current process. This is usually due to previous crashes. ***
hello
F:\qtProject\myListWidget\myListWidget-build-desktop\debug\myListWidget.exe 退出, 代码: 0

我是想模仿QListWidget,QListWidgetItem两个类,创建自己的MyListWidget类和MyListWIdgetItem类。开始的时候成功了,后来运行时出错了。
请问是什么错误 。请各位指教

最佳答案

查看完整内容

从头做吧。理论可行的,就是乱了点,你再item中又用了listwidget,这个不知想实现什么! 既然是学习,就别害怕出错,按自己的想法做吧。
回复

使用道具 举报

累计签到:1571 天
连续签到:1 天
2013-11-17 22:21:29 显示全部楼层
cliffordl 发表于 2013-11-19 11:39
小弟试了,还是不行,我把所有的代码都注释掉,也不行。
重新实现了,试了几次,没又出现这类问题。不知 ...

从头做吧。理论可行的,就是乱了点,你再item中又用了listwidget,这个不知想实现什么!

既然是学习,就别害怕出错,按自己的想法做吧。
回复

使用道具 举报

累计签到:181 天
连续签到:1 天
2013-11-18 10:05:41 显示全部楼层
把代码贴成这样,谁还能找到问题在哪啊?
回复

使用道具 举报

累计签到:23 天
连续签到:1 天
2013-11-18 14:19:39 显示全部楼层
hzzhou 发表于 2013-11-18 10:05
把代码贴成这样,谁还能找到问题在哪啊?

小弟知错,代码已经改过了,请指教。

我是想模仿QListWidget,QListWidgetItem两个类,创建自己的MyListWidget类和MyListWIdgetItem类。开始的时候成功了,后来运行时出错了。
回复

使用道具 举报

累计签到:1571 天
连续签到:1 天
2013-11-19 09:44:31 显示全部楼层
cliffordl 发表于 2013-11-18 14:19
小弟知错,代码已经改过了,请指教。

我是想模仿QListWidget,QListWidgetItem两个类,创建自己的MyList ...

程序有点乱啊,现在也看不出什么具体问题。

最好的解决办法是自己先把代码化简,化简到可以通过编译为止,然后再一点点添加代码,这样就可以知道是哪里的问题了。
回复

使用道具 举报

累计签到:23 天
连续签到:1 天
2013-11-19 11:39:48 显示全部楼层
yafeilinux 发表于 2013-11-19 09:44
程序有点乱啊,现在也看不出什么具体问题。

最好的解决办法是自己先把代码化简,化简到可以通过编译为止 ...

小弟试了,还是不行,我把所有的代码都注释掉,也不行。
重新实现了,试了几次,没又出现这类问题。不知道是不是代码之外的问题。

初学类,对类的认识还不深刻,自己试出来的方法,不知道理论上行不行的通,求指教。
如果行的通,我继续做,行不通只能另辟蹊径了。
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2015-1-15 19:47:00 显示全部楼层
我也碰到过,这是你之前程序崩溃所致,只要程序无错的运行几次后就不会再提示了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了