내 QDialog가 닫힌 후 seg fault가 발생합니다. 내 구조체를 사용하기 전에 malloc, 설정은 PSETTINGS 유형이며 개인 변수입니다.QDialog exec() (SEG FAULT)
MainWindow를 클래스 : 헤더 파일에서
:는
Settings *settingsDiag = new Settings(this);
settingsDiag->exec();
설정 클래스 (원세그 오류는 settingsDiag->exec()
에서 발생)
typedef struct ConnSettings {
ConnSettings():ipAddr(""), alias("Local"), port(8000), isClient(false){}
QString ipAddr;
QString alias;
int port;
bool isClient;
} SETTINGS, *PSETTINGS;
CPP 파일에서 :
개Settings::Settings(QWidget *parent) :
QDialog(parent),
ui(new Ui::Settings)
{
ui->setupUi(this);
QButtonGroup serviceGroup(ui->serviceBox);
QValidator *validPort = new QRegExpValidator(QRegExp("^\\d*$"), this);
QValidator *validIp = new QRegExpValidator(QRegExp("^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$"), this);
serviceGroup.addButton(ui->clientButton);
serviceGroup.addButton(ui->serverButton);
connect(ui->okCancel, SIGNAL(accepted()), this, SLOT(storeSettings()));
connect(ui->clientButton, SIGNAL(toggled(bool)), this, SLOT(enableDisableClient(bool)));
ui->portText->setValidator(validPort);
ui->ipText->setValidator(validIp);
}
Settings::~Settings() {
delete ui;
}
void Settings::storeSettings() {
settings = (PSETTINGS)malloc(sizeof(SETTINGS));
settings->port = ui->portText->text().toInt();
if((settings->isClient = ui->clientButton->isChecked())) {
settings->ipAddr = ui->ipText->text();
settings->alias = ui->aliasText->text();
}
}
PSETTINGS Settings::getSettings() {
return settings;
}
void Settings::enableDisableClient(bool client) {
ui->clientBox->setEnabled(client);
}
감사합니다 :)
확인. 나는이 표준을 아직 모르기 때문에 이것에 익숙하지 않다. 감사. – Koralarts
당신은 오신 것을 환영합니다. –