QT应用程序停止工作

QT application stops working

本文关键字:停止工作 应用程序 QT      更新时间:2023-10-16

最近我有一个想法来提高我的编程技能,并尝试编写一个简单的应用程序,如检查器。自从开始不久,我就遇到了一个问题,这是我的应用程序停止工作,在我生成一个新窗口"设置"后的几秒钟内。我注意到,如果我注释掉我改变MainWindow类的玩家名称的行,就不会发生这种情况。setingswindow是MainWindow类中的来宾。这里有一个代码

#include "settingswindow.h"
#include "ui_settingswindow.h"
settingsWindow::settingsWindow(QWidget *parent, QString player1, QString player2) :
    QMainWindow(parent),
    ui(new Ui::settingsWindow)
{
    ui->setupUi(this);
    ui->lineEdit_P1->text()=player1;
    ui->lineEdit_P2->text()=player2;
}
settingsWindow::~settingsWindow()
{
    delete ui;
}
void settingsWindow::on_lineEdit_P1_editingFinished()
{
    chng->player1_Name = ui->lineEdit_P1->text(); 
}
void settingsWindow::on_lineEdit_P2_editingFinished()
{
    chng->player2_Name = ui->lineEdit_P2->text();
}

和头文件

#ifndef SETTINGSWINDOW_H
#define SETTINGSWINDOW_H
#include <QMainWindow>
#include "mainwindow.h"
class MainWindow;
namespace Ui {
class settingsWindow;
}
class settingsWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit settingsWindow(QWidget *parent = 0);
    explicit settingsWindow(QWidget *parent, QString player1, QString player2);
    ~settingsWindow();
private slots:
    void on_lineEdit_P1_editingFinished();
    void on_lineEdit_P2_editingFinished();
private:
    Ui::settingsWindow *ui;
    MainWindow *chng;
};
#endif // SETTINGSWINDOW_H

如果没有从主窗口看到代码,对我来说问题并不明显,但我确实注意到你的设置窗口也来自QMainWindow,这可能不是你想要的。你可能想要一个模态对话框,这意味着它应该从QDialog派生,或者如果它是一个永久居民在你的主窗口,你可能想要一个QDockWidget子类。