Qt奇怪的调试器错误QWidget和QApplication

问题描述 投票:-1回答:1

当我将代码输入到按钮的插槽时会发生这种情况

当我正常调试应用程序,所有功能等一切都很好。但是当我尝试在UI中使用我的代码时,某些事情就会破灭。我正在为我的单人课程制作停车系统,我有一辆父母级车辆和4个儿童班,由公众继承。

这是UI源文件中的代码:

#include "datain.h"
#include "ui_datain.h"
#include <QMessageBox>
#include <car.h>
#include <bike.h>
#include <motorbike.h>
#include <tir.h>
#include <vehicle.h>
#include <iostream>

using namespace std;

dataIn::dataIn(QWidget *parent) :
     QDialog(parent),
    ui(new Ui::dataIn)
{
    ui->setupUi(this);
}

dataIn::~dataIn()
    {
    delete ui;
    }
 dataIn siema;


 void dataIn::on_lineEdit_textEdited(const QString &arg1)
{
   siema.rejestracja=arg1;
 }

void dataIn::on_lineEdit_2_textEdited(const QString &arg1)
{
    siema.marka=arg1;
}

 void dataIn::on_car_clicked()
{
    Vehicle *wsk;

    string reje,mareczka;
    reje=siema.rejestracja.toStdString();
    mareczka=siema.marka.toStdString();
    Car obj(reje,mareczka);

   wsk=&obj;
   wsk->add();

}

void dataIn::on_motorcycle_clicked()
{
    Vehicle *wsk;

    string reje,mareczka;
    reje=siema.rejestracja.toStdString();
    mareczka=siema.marka.toStdString();
    Motorbike obj(reje,mareczka);

  wsk=&obj;
  wsk->add();

}

void dataIn::on_bike_clicked()
{
    Vehicle *wsk;

string reje,mareczka;
reje=siema.rejestracja.toStdString();
mareczka=siema.marka.toStdString();
Bike obj(reje,mareczka);

wsk=&obj;
wsk->add();

}

 void dataIn::on_tir_clicked()
{
   Vehicle *wsk;

string reje,mareczka;
reje=siema.rejestracja.toStdString();
mareczka=siema.marka.toStdString();
Tir obj(reje,mareczka);

wsk=&obj;
wsk->add();

}

这是主要的:

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
   MainWindow w;
    w.show();

    return a.exec();
}

dataIn代码:

#ifndef DATAIN_H
#define DATAIN_H
#include <QString>
#include <iostream>
#include <QDialog>
 using namespace std;
 namespace Ui {
class dataIn;
}

class dataIn : public QDialog
{
    Q_OBJECT
   QString rejestracja;
    QString marka;
public:
    explicit dataIn(QWidget *parent = 0);
    ~dataIn();

private slots:

    void on_lineEdit_textEdited(const QString &arg1);

    void on_lineEdit_2_textEdited(const QString &arg1);

    void on_car_clicked();

    void on_motorcycle_clicked();

    void on_bike_clicked();

    void on_tir_clicked();

private:
    Ui::dataIn *ui;
};

#endif // DATAIN_H
c++ qt
1个回答
0
投票

你可能不会申报

dataIn siema;

你不应该参考它 - 从你的数据中删除所有qazxsw poi ...引用在函数中(用qazxsw poi替换qazxsw poi)。

当您第一次需要对话框时,请在siema.中创建它(并作为其子代):

siema.

如果您需要再次引用它或者想要防止它被创建两次,请将指针存储在this->的成员中。

© www.soinside.com 2019 - 2024. All rights reserved.