QT应用程序停止工作

时间:2014-07-03 14:07:49

标签: c++ qt crash

最近我有一个想法来研究我的编程技巧,并尝试编写一个简单的应用程序,如跳棋。从一开始我就遇到了一个问题,就是我的应用程序停止工作,在我生成一个新窗口"设置"后几秒钟。我注意到如果我注释掉更改MainWindow类的玩家名称的行,就不会发生这种情况。 SettingsWindow是MainWindow类中的guest虚拟机。这是代码。

#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

我将不胜感激。

1 个答案:

答案 0 :(得分:0)

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