我在终端示例中将我的代码的这一部分基于。当我更新主窗口中的字段时,我不是将生成的字符串存储在结构中,那么当在我的辅助源中调用命令时,我想使用传递的字符串。
在我的main.h中我有
struct Settings {
QString Id;
};Settings settings() const;
private:
Ui::MainWindow *ui;
Settings currentSettings;
在我的main.cpp中是设置Id
值的代码void MainWindow::on_comboBox_currentTextChanged(const QString &arg1)
{
QString Data = arg1;
if (arg1 == "Universal"){
Data = "xxx";
}
else{
Data = Format_Class::format_3(Data);
}
currentSettings.Id = Data;
}
MainWindow::Settings MainWindow::settings() const
{
return currentSettings;
}
此代码有效,因为currentsettings id设置为正确的值。
在我的模式中。我有
namespace Ui {
class Mode;
}
class MainWindow;
class Mode : public QDialog
{
Q_OBJECT
public:
explicit Mode(QWidget *parent = 0);
~Mode();
private:
Ui::Mode *ui;
MainWindow *settings;
};
然后在我的mode.cpp中,实际使用我拥有的数据的页面
void Mode::on_pushButton_clicked()//ok
{
MainWindow::Settings p = settings -> settings();
QString hash = "#";
QString end = "\r";
QString identifier = (p.Id);
函数转到
MainWindow::Settings p = settings -> settings();
发生致命错误并崩溃。在调试模式下调用return currentsettings时,currentSettings / id为<not accessible>
,此后程序崩溃。
程序崩溃时发生的错误是
收到信号
下级因为收到来自操作系统的信号而停止了
信号名称:SIGSEGV 信号含义:分段故障
答案 0 :(得分:0)
在模式中,你有:
void Mode::on_pushButton_clicked()//ok
{
MainWindow::Settings p = settings -> settings();
您确定初始化Mode的settings
变量吗?将此类型指定为settings
时,将此变量命名为MainWindow*
似乎很奇怪。