最近我有一个想法来提高我的编程技能,并尝试编写一个简单的应用程序,例如跳棋。自从开始后不久,我就遇到了一个问题,即我的应用程序在生成新窗口“设置”后几秒钟内停止工作。我注意到,如果我注释掉更改 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
我将不胜感激任何帮助。
最佳答案
如果没有看到主窗口中的代码,问题对我来说并不明显,但我确实注意到您的设置窗口也源自QMainWindow
,这可能不是您想要的。您可能需要一个模式对话框,这意味着它应该从 QDialog
派生,或者如果它永久驻留在您的主窗口中,您可能需要一个 QDockWidget
子类。
关于c++ - QT 应用程序停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24555968/