Qt QDialog exec()(SEG故障)
我的QDialog在关闭后导致seg故障。在使用我的结构之前,我将其malloc,设置类型为PSETTINGS,是一个私有变量 主窗口类:(Seg故障发生在Qt QDialog exec()(SEG故障),qt,segmentation-fault,Qt,Segmentation Fault,我的QDialog在关闭后导致seg故障。在使用我的结构之前,我将其malloc,设置类型为PSETTINGS,是一个私有变量 主窗口类:(Seg故障发生在设置DIAG->exec()) 设置类: 在头文件中: typedef struct ConnSettings { ConnSettings():ipAddr(""), alias("Local"), port(8000), isClient(false){} QString ipAddr; QString alias
设置DIAG->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);
}
谢谢:)您正在堆栈上分配QButtonGroup服务组。可能不是你想做的。malloc也造成了问题。该结构中的字符串不用构造就可以使用。假设堆在该点之后损坏 而不是malloc尝试
settings = new SETTINGS();
。。。当然,当您完成后,请删除它。确定。我是新手,所以我还不知道标准。谢谢
settings = new SETTINGS();